设置信号和槽
对话框类Qdialog内置槽函数
accept():关闭对话框,表示肯定的选择,例如“确定”
reject():关闭对话框,表示否定的选择,例如“取消”
close():关闭对话框
将确定按钮与accept()槽函数关联
点击工具栏上的Edit Signals/Slots按钮
鼠标点击选中确定按钮,按住鼠标左键拖动到窗体空白区域后释放左键,弹出关联设置对话框
左边选clicked,右边选accept(),然后点OK。
底部的Signals Slots Editor出现一条数据
将关闭按钮与close()槽函数关联
右边没有close按钮,要选显示从QWidget继承的信号和槽
保存Qt项目,将ui文件拷贝到Eric6目录中
Eric6下创建项目
项目下只有一个__init__.py文件
选择窗体,编译
编译后查看文件
上面红色框框中的两行代码就是刚刚建好的信号与槽的关联
创建窗体业务逻辑类
按照界面与业务逻辑分离且界面独立封装的方式定义一个类QmyDialog,保存为myDialog.py。代码如下:
代码语言:javascript复制##与UI窗体类对应的业务逻辑类
import sys
from PyQt5.QtWidgets import QApplication, QDialog
from Ui_Dialog import Ui_Dialog
class QmyDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent) #调用父类构造函数,创建窗体
self.ui=Ui_Dialog() #创建UI对象
self.ui.setupUi(self) #构造UI界面
if __name__ == "__main__": #用于当前窗体测试
app = QApplication(sys.argv) #创建GUI应用程序
form=QmyDialog() #创建窗体
form.show()
sys.exit(app.exec_())
运行myDialog
myDialog可以直接运行
确定和退出两个按钮都可以正常使用。
这是因为在QmyDialog的构造函数__init__中创建了窗体类的实例对象self.ui,并调用了setupUi()函数。而SetupUi()函数实现了这两个按钮的信号与窗体相关槽函数的关联。
其他按钮还没填代码,所以不行。
建立应用程序主程序文件appMain.py
myDialog.py可以当作主程序直接运行,但是建议单独编写一个主程序文件appMain.py。
该文件的功能是创建应用程序和主窗体,然后显示主窗体,并开始运行应用程序。
appMain.py将myDialog.py文件的测试运行部分单独拿出来作为一个文件
当一个应用程序有多个窗体,并且窗体之间有数据传递时,appMain.py负责创建应用程序的主窗体并运行起来,这样使整个应用程序的结构更清晰
appMain.py的代码如下:
代码语言:javascript复制## GUI应用程序主程序
import sys
from PyQt5.QtWidgets import QApplication
from myDialog import QmyDialog
app = QApplication(sys.argv) #创建GUI应用程序
mainform=QmyDialog() #创建主窗体
mainform.show() #显示主窗体
sys.exit(app.exec_())
为组件的内建信号编写槽函数
清空按钮
为清空按钮添加槽函数
进入Qt Creator,右键点击清空按钮,选择转到槽
选择clicked
在弹出的文件中复制函数名
进入Eric6,在myDialog.py文件的QmyDialog类里定义一个同名函数并编写代码
添加PlainText的初始化函数
在Ui_Dialog.py中添加如下函数
在myDialog.py中添加对这个函数的调用
运行程序
按清空按钮
内容被清空
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!