GUI 就是图形用户界面的意思,在 Python 中使用 PyQt 可以快速搭建自己的应用,使得自己的程序看上去更加高大上,学会 GUI 编程可以使得自己的软件有可视化的结果,更方便地参加 “互联网+”或其他创新创业大赛。
目 录
1 安装 PyQt 与 QtDesigner
如果你想用 Python 快速制作界面,可以安装 PyQt:
pip install pyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple
或
pip install -i https://mirror.baidu.com/pypi/simple pyQt5
或
pip install pyQt5 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
或
混合使用
随后继续安装 QtDesigner:
pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple
或
pip install -i https://mirror.baidu.com/pypi/simple pyqt5-tools
或
pip install pyqt5-tools-i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
或
混合使用
2 添加 GUI 到 PyCharm
点击 PyCharm 的 File --> Settings --> Tools --> External tools 打开外部工具界面,点 ‘+' 号进入添加外部工具界面。在 ‘Name' 处输入工具名称,这个名称可以随便取,只要自己清楚就行,我这里写的是 Qt designer。
在 python 安装目录下的 Lib \ site-packages \ pyqt5_tools 文件夹里找到安装的 designer.exe 所在的路径。
将路径复制到 ‘Programs' 处,注意要包含 designer.exe 的文件名。Working directory 处设置自己的工作路径,qtdesigner 生成的 ui 文件会默认保存在该路径。‘Arguments' 不用设置,确认即可。
接下来,按同样的方法添加 pyuic,pyuic 用于将 qtdesigner 生成的 .ui 文件转换成 python 可以识别的 .py 文件。其设置过程如下图所示,Programs 处输入 python.exe 所在的路径和文件名,Arguments 处输入:
-m PyQt5.uic.pyuic -o $FileNameWithoutExtension$.py $FileName$
在 Working directory 处输入:
$FileDir$
这样生成的 py 文件就会和被转换的 ui 文件位于相同的文件夹下。点击 ok 完成设置。
3 界面设计测试小程序
打开 PyCharm,选择菜单 File --> New Project 新建一个工程项目,如下图所示,输入该项目的路径和名称,这里设置项目名称为 PyQtTest。
完成后,单击 Tools --> External Tools --> Qt designer 打开 QtDesigner。
QtDesigner 打开后会自动弹出新建窗口的对话框,如果没有弹出的话可以单击 File --> New 来打开该对话框。如下图所示,选择 Main Windows,然后单击 Create 来创建一个主窗口。
点击 File --> Save as,将当前界面保存到我们刚创建的 PyQtTest 项目文件夹下,文件名设为 QtTest.ui。
保存完成后,回到 PyCharm 中,可以看到我们的 PyQtTest 项目下多了一个 QtTest.ui 文件。
鼠标右键单击该文件调出右键菜单,单击 External tools --> PyUIC,程序会调用 pyuic,将 ui 文件转换为 py 文件,执行完成后就会在该项目中生成一个 QtTest.py 文件了。
接下来右键单击 PyQtTest 项目,选择 New --> Python File 新建一个 Python 文件,文件名设为 'QtUi.py',打开该文件输入如下代码:
from QtTest import Ui_MainWindow
import sys
from PyQt5.QtWidgets import QApplication,QMainWindow
class CamShow(QMainWindow,Ui_MainWindow):
def __init__(self,parent=None):
super(CamShow,self).__init__(parent)
self.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
ui=CamShow()
ui.show()
sys.exit(app.exec_())