知识回顾
1.已经拥有pyqt5可视化界面开发环境搭建
2.简单解析了pyuic生成的python代码
3.纯代码方式写了基于pyqt5的GUI界面
一、空的程序的生成理解
1.采用手工纯代码方式书写GUI程序。
2.采用qtdesigner方式来进行界面规划。
通过两种不同的形式制作的pyqt5程序,观察有何不同。
理解Qwidget是基于所有控件的基类,包括窗体控件、按钮、文本等等。
二、Qt Designer设计师界面相关属性
Geometry属性:
X:代表窗体出现的位置是在屏幕的左上角水平方向的0 的位置
Y:代表窗体出现的位置是在屏幕左上角垂直方向的0的位置
默认宽度:400
默认高度:300
ObjectName属性:表示窗体对象的名称 。对应的python代码中设置窗体名称的方法setObjectName
注意:窗体对象其实就是指qwidget的实例化对象
三、补充pyuic命令解析
使用Python.exe解释器
-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
命令说明:-m表示调用某个模块,这表表示调用PyQt5.uic.pyuic 模块
$FileName$表示需要转换的源文件名称
-o 表示需要生成目标文件,这里使用$FileNameWithoutExtension$表示与源文件相同的文件名称但不包含扩展名的目标文件,扩展名,我们通过自己连接.py,那么最终表示生成的是python类型的文件。
四、Qt中信号的理解
比如说单击事件、某个超时信号等都是qt中的信号,说到底其实就是界面上面发生某个事件。
相关路径概念的说明
绝对路径:从根目录开始的详细路径
相对路径:相对于某个文件目录的路径
相对路径往往有一些符号代表:
.点表示当前路径
..点点表示上一层路径
五、函数补充解释
resize函数
作用:重新调整窗体的大小。
有两个参数,第一个参数表示宽度值,第二个参数表示高度值。
举例:
Form.resize(400, 300)
move函数
作用:调整窗体的位置。
第一个参数表示水平水平方向的位置。
第二个参数表示垂直方向的位置。
使用举例:
Form.move(0,0)
show函数
Pyqt5的show函数是窗体的显示功能
六、总结强调
1.掌握qtdesigner设计界面与pyuic转换后文件代码的对应关系。
2.掌握pyqt5中界面中常用函数的基本用法
3.掌握如何调用生成界面的思想。实则是如何使用pyqt5纯代码写gui界面的关键。
以下为本节源代码
UI转为py后的代码:
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'ljytest003.ui' # # Created by: PyQt5 UI code generator 5.13.1 # # WARNING! All changes made in this file will be lost! from PyQt5 import QtCore, QtGui, QtWidgets class Ui_Form(object): def setupUi(self, Form): Form.setObjectName("Form") Form.resize(400, 300) Form.move(0,0) self.retranslateUi(Form) QtCore.QMetaObject.connectSlotsByName(Form) def retranslateUi(self, Form): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form"))
ljy003.py调用UI界面
#导入python系统类库 import sys #导入Pyqt5用到的类库,QApplication应用程序类,QWidget控件的基类 from PyQt5.QtWidgets import QApplication,QWidget #导入生成界面的类的模块 import ljytest003 #实例化一个类,通过构造函数传入python的应用参数 print(sys.argv) #这里打印出包含当前文件绝对路径名称的列表 app=QApplication(sys.argv) #实例化界面基类 w=QWidget() #实例化生成的界面的类 form=ljytest003.Ui_Form() #将生成的窗体控件及配置载入到w控件对象中 form.setupUi(w) #窗体显示 w.show() #app.exec_()表示程序界面监听事件的开始,是一个死循环。 sys.exit(app.exec_())