2
打开后,首先是一个默认的新建窗口界面,在这里我们就选择默认的窗口即可。
3
现在是一个完全空白的窗口。第一步我们要先把所有的设计元素都拖进这个窗口。我们先拖入一个“Label”,就是一个不可编辑的标签。
4
随后我们再拖入一个可以编辑的“Line Edit”
5
最后我们拖入最后一个元素:“PushButton”按钮,也就是平时我们所点的确定。
6
目前我们已经把所有所需要的元素都拖入了新建的窗口。对于每一个元素,我们都可以双击进行属性值的修改,此时我们仅需要双击改个名字即可
7
此时我们已经完成了一半,接下来需要对动作信号进行 *** 作。我们需要先切入编辑姿芹简信号的模式
8
此时把鼠标移动到任意元素,都会发现其变成红色,代表其被选中。
9
当我们选中pushbutton后,继续拖动鼠标指向上面的line edit,会发现由pushbutton出现一个箭头指向了line edit,代表pushbutton的动作会对line edit进行 *** 作。
10
随即会d出一个配置连接窗口。左边的是pushbutton的 *** 作,我们选择clicked(),即点击pushbutton。
右边是对line edit的 *** 作,我们选择clear(),即清楚line edit中的内容。
最后我们点击确定。
保存完成后,我们在PyQt中的 *** 作迹裤就已经完成了。保存的文件名我们命名为test,PyQt生成的设计文件后缀是.ui。
然后我们需要把.ui文件转换成可编译的.py文件,我们需要用到PyQt提供的pyuic4命令来完成转换。这是一个DOS命令,因此我们需要调出DOS *** 作界面。打开开始菜单,找到附件中的运行。
在运行中输入cmd,确定后即可打开DOS界面。
在DOS界面下,我们需要定位到刚才保存的.ui文件的位置,如果是默认的话,会保存在C:\Python27\Lib\site-packages\PyQt4,定位的过程如图所示。转换成.py文件的命令是:pyuic4 test.ui -o test.py
转换命令执行后,会生成一个test.py的文件,如图所示
最后我们需要对生成的python文件加入头文件和主函数,就可以生成一个完整的GUI程序了!首先是在整个程序的最开头加入import sys,如图所示。
另外,在程序的末尾,加入如图所示的主函数代码。主函数会调用我们再PyQt里已经完成的生成元素的函数以及配置连接函数,因此我们只需要加上主首薯函数来调用他们即可。
保存后,双击我们编辑完成的python文件,就会d出我们刚才设计的GUI界面啦!这就是我们所完成的第一个用python语言写的GUI程序啦!
一、Pyqt5创建第一个窗体
很多人写窗体程序都是直接敲代码,不使用设计器,我个人不是很赞成这种做法。使用设计器的好处是直观、维护方便,尤其开发复杂窗体的效率羡伏戚高。
但是每次修改ui文件后,需要重新生成py文件,会将原来的内容覆盖掉,为了避免这种情况,引入了一个中间类。主要步骤如下:
1使用QtDesigner创建一个简单的对话框,保存成simpleDialog.ui。
2使用cmd,进入simpleDialog.ui文件所在的目录,运行命令pyuic5
simpleDialog.ui
>ui_simpleDialog.py
3打开ui_simpleDialog.py,pyqt自动生成的代码如下(无需任何修改):
from
PyQt5
import
QtCore,
QtGui,
QtWidgets
class
Ui_Form(object):#注意pyqt5窗体从object继承,不是QMainWindow了
def
setupUi(self,
Form):
Form.setObjectName("Form")
Form.resize(400,
300)
self.pushButton
=
QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(60,
70,
241,
131))
self.pushButton.setObjectName("pushButton")
self.retranslateUi(Form)
self.pushButton.clicked.connect(Form.close)
QtCore.QMetaObject.connectSlotsByName(Form)
def
retranslateUi(self,
Form):
_translate
=
QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form",
"Form"))
self.pushButton.setText(_translate("Form",
"PushButton"))
可以看到刚才新建的对话框的类名称是”Ui_Form”。
4新建一个simpleDialog.py文件,编写代码如下:
from
PyQt5
import
QtCore,
QtGui,
QtWidgets
from
ui_simpledialog
import
Ui_Form
import
sys
class
SimpleDialogForm(Ui_Form):#从自动生成的界面类继承
def
__init__(self,
parent
=
None):
super(SimpleDialogForm,
self).__init__()
def
yourFunctions(self):
Pass
#这个类中处理你自己的业务逻辑。界面ui可随心所欲的修改,不影响你已经编写的逻辑。
自定义一个类(SimpleDialogForm)继承自pyqt自动生成的类,然后覆写”构造函数”,剩余的工作就是你自己想要添加的功能了。
5完善运行测试代码,如下:
if
__name__
==
"__main__":
app
=
QtWidgets.QApplication(sys.argv)
main
=
QtWidgets.QMainWindow()#创建一个主窗体(必须要有一个主窗体)
content
=
SimpleDialogForm()#创建对话框
content.setupUi(main)#将对话框依附于主窗体
main.show()#主窗体显示
sys.exit(app.exec_())
6为什么要厅雀这么做?
基于界面与实现分离兄陵的原则,我们使用QtDesigner设计的窗体,仅仅作为界面使用,具体业务逻辑通过单独的文件实现,这样以后如果界面发生变动,pyqt自动生成窗体代码时不会覆盖掉我们已经编写的业务逻辑。
7推荐的做法:
为了有良好的封装性,将中间类修改为:
class
SimpleDialogForm(Ui_Form,
QtWidgets.QMainWindow):
def
__init__(self,
parent
=
None):
super(SimpleDialogForm,
self).__init__()
self.setupUi(self)#在此设置界面
#在此,可添加自定义的信号绑定
self.pushButton.clicked.connect(self.openFile)
self.pushButton_2.clicked.connect(self.closeApp)
测试代码这样写:
if
__name__
==
"__main__":
app
=
QtWidgets.QApplication(sys.argv)
main
=
SimpleDialogForm()
main.show()#在外面只需要调用simpleDialogForm显示就行,不需要关注内部如何实现了。
sys.exit(app.exec_())
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)