前序
之前学习了一款GUI图形界面设计的Tkinter库,但是经大佬的介绍,PyQT5全宇宙最强,一脸的苦笑
毫不犹豫的选择转战PyQT5,在学习之前需要先安装一些必须程序,在一番查阅后,发现PyQt5的学习存在两种
学习工具,一种是Eric6,单独的图形界面编写脚本,(还是用python编写的),另一个就是直接装在pycharm里的
外部工具。因为一直一样来用惯了pycharm,所以选择了pycharm的安装方法
目录
首先就是pip安装PyQt5:
pip install PyQt5
然后需要安装Qt工具,也选择pip安装:
pip install PyQt5-tools
安装完成之后先确认一下安装位置,因为之后用的上,正常的话,会在你的python的安装目录下的
pythonx.xLibsite-packages目录下,如图:
然后进入pycharm的File下的settings,选择External Tools,
因为我已经安装好了,所以窗口有工具的显示,
没有安装的应该是空白的或者其他你之前安装好的工具,点击上方的绿色加号
先引入Qt设计的工具(这个工具可以以控件拖拽的形式设计自己的界面程序)
在加号弹出的显示框中输入如图的内容
Name:QtDesigner
Program:之前PyQt5-tools目录下的designer.exe文件
Working directory:$FileDir$
这样,QttDesigner就完成了
再引入转代码的PyUIC工具(PyUIC可以将前面设计的程序转换成python代码)
如图设置,所见即所得,Program的设置是python目录下的Script下的pyuic5.exe
Argument的设置如下
-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
如此安装就完成了
使用的话,在需要的目录下右键选择External Tools选择QtDesigner进行DUI设计,然后保存,
再对.ui文件相同方法选择PyUIC,就可以转化成为.py文件
有一个问题是这个时候的python代码点击运行是没有弹出你设计好的窗口的
1、在转换的.py文件内删除以下三行:
MainWindow.setCentralWidget(self.centralwidget)
MainWindow.setMenuBar(self.menubar)
MainWindow.setStatusBar(self.statusbar)
2、在底部添加如下代码:
if __name__=="__main__": import sys app = QtWidgets.QApplication(sys.argv) widget = QtWidgets.QWidget() ui = Ui_MainWindow() ui.setupUi(widget) widget.show() sys.exit(app.exec_())
这样虽然可以达到设计与代码的界面逻辑工作,但是只适用于你的GUI设计一次就设计完成,后续不用再进行更改,
不然修改后的.ui文件再转换成.py文件的话,之前的代码就会被覆盖,所以实用度不大
再介绍一种新的方法,将设计与逻辑分离,只用建立一个新的.py文件调用界面文件,这个新的.py文件称为逻辑文件,
也可以实现业务文件。界面文件和逻辑文件是两个分开的相对独立的文件,通过上述的方法就可以实现界和逻辑的分离。
实现上述理论的方法很简单,新建的.py文件代码如下:
import sys from PyQt5.QtWidgets import QApplication, QMainWindow from MyFirstUI import * class MyMainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(MyMainWindow, self).__init__(parent) self.setupUi(self) if __name__ == '__main__': app = QApplication(sys.argv) myWin = MyMainWindow() myWin.show() sys.exit(app.exec_())
需要注意的是:新建的文件,需要和前面的文件放在一起,另外代码中斜体下划线的字是你自己.ui文件的文件名,
要自己修改。这样的话,两边都可以修改,又不会相互影响,大功告成!!!!
我们在设计GUI的时候,常常需要用到一些资源文件,比如图片这样的文件,通常较使用的方法是将资源文件
转换成Python文件,然后引用Python文件。
首先需要在Pycharm中新建一个.qrc文件,在文件里面填入如下内容:
<rcc version="1.0">
<qresource>
</qresource>
</rcc>
然后在Qt Designer中创建一个Widget窗口,找到资源浏览器,打开之前创建的.qrc文件,然后再导入需要使用的资源文件,
如图,左边导入文件叫apprcc_rc.qrc,右边创建一个存放资源文件的文件夹(pic),再导入资源文件,完成后保存退出
注意:.qrc文件转换成功以后是同名的.py文件,但是Qt Designer导入文件默认是加_rc.py格式的,
所以要么文件名为xxx_rc.qrc再转换,要么就转换完了以后再重命名为加_rc.py的文件
会发现之前的.qrc文件里面的代码是XML格式的,然后开始讲解在Pycharm中如何将.qrc文件转换成py文件
<RCC>
<qresource prefix="pic">
<file>images/cartoon1.ico</file>
<file>images/cartoon2.ico</file>
<file>images/cartoon3.ico</file>
<file>images/cartoon4.ico</file>
<file>images/python.jpg</file>
</qresource>
</RCC>
进入pycharm的File下的settings,选择External Tools
Program:自己Python安装路径下的Script下的pyrcc5.exe
Argument:
$FileName$
-o
$FileNameWithoutAllExtensions$.py
Working directory:。。。。
这样就可以使用资源文件了