PyQt5编程基础 2.2 信号与槽函数-设置信号与槽函数

2023-11-27 00:36:48 浏览数 (1)

设置信号和槽

对话框类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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞