为信号添加槽函数

在上一篇中,初步学会了如何使用Qt Designer来设计UI界面,在本篇中,我们使用Qt Designer为控件的信号添加连接的槽函数。

使用Qt Designer为测试按钮添加功能,当点击按钮时,弹出一个消息框,并显示信息"这是一个PyQt5应用",为此我们需要给对象名为btnTest的QPushButton按钮的onClicked信号添加一个槽函数。

在界面中添加一个QPushButton, 其标题信息为"测试", 对象名称为btnTest, 将主窗口的标题信息由"MainWindow" 改成"实战PyQt5:Qt Designer 演示2"。

点击菜单"Edit --> Edit Signals/Slots"(或者按快捷键F4, 或者点击 工具条上的" Edit Signals/Slots"按钮),进入信号/槽编辑模式,选中"Test"按钮,按下鼠标,并拖动,就会显示出一条红色的连接线,释放鼠标,弹出窗口"Configure Connection - Qt Designer",然后点击右边的"编辑"按钮,弹出编辑对话框"Signal/Slots of MainWindow - Qt Designer", 点击"Slots"组的"+"按钮,添加一个槽函数onBtnTestClicked(),点击"OK"按钮退回到窗口"Configure Connection - Qt Designer",选中左边的clicked()信号,然后再选中右边的onBtnTestClicked(),点击"OK"按钮退出,至此,我们就成功地为"测试"按钮的点击信号添加响应的槽函数,onBtnTestClicked()。然后点击保存,这一步工作完成。其操作过程如下图所示:

Qt Designer SIgnal/Slot 编辑演示

槽函数实现

假定刚才我们保存的文件, 将其转化成Python代码为 Ui_demo2.py, 其代码如下,

from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object):    def setupUi(self, MainWindow):        MainWindow.setObjectName("MainWindow")        MainWindow.resize(585, 428)        self.centralwidget = QtWidgets.QWidget(MainWindow)        self.centralwidget.setObjectName("centralwidget")        self.btnTest = QtWidgets.QPushButton(self.centralwidget)        self.btnTest.setGeometry(QtCore.QRect(200, 170, 75, 23))        self.btnTest.setObjectName("btnTest")        MainWindow.setCentralWidget(self.centralwidget)        self.menubar = QtWidgets.QMenuBar(MainWindow)        self.menubar.setGeometry(QtCore.QRect(0, 0, 585, 23))        self.menubar.setObjectName("menubar")        MainWindow.setMenuBar(self.menubar)        self.statusbar = QtWidgets.QStatusBar(MainWindow)        self.statusbar.setObjectName("statusbar")        MainWindow.setStatusBar(self.statusbar)         self.retranslateUi(MainWindow)        self.btnTest.clicked.connect(MainWindow.onBtnTestClicked)        QtCore.QMetaObject.connectSlotsByName(MainWindow)     def retranslateUi(self, MainWindow):        _translate = QtCore.QCoreApplication.translate        MainWindow.setWindowTitle(_translate("MainWindow", "实战PyQt5:Qt Designer 演示2"))        self.btnTest.setText(_translate("MainWindow", "测试"))

可以看到,其中加入了信号槽连接语句

self.btnTest.clicked.connect(MainWindow.onBtnTestClicked)

创建文件qtdesignerdemo2.py 在其中创建类 DesignerDemo2,并在其中实现槽函数onBtnTestClicked(self),qtdesignerdemo2.py完整代码如下:

import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBoxfrom Ui_demo2 import Ui_MainWindow class DesignerDemo2(QMainWindow, Ui_MainWindow) :    def __init__(self, parent = None):        super(DesignerDemo2, self).__init__(parent)        self.setupUi(self)            def onBtnTestClicked(self) :        QMessageBox.information(self, '信息', '这是一个PyQt5应用') if __name__ == '__main__':    app = QApplication(sys.argv)    window = DesignerDemo2()    window.show()    sys.exit(app.exec())

运行结果如下图:

Qt Designer 演示

本文知识点

  • 使用Qt Designer添加槽函数的方法;
  • 在Qt Designer中设置主窗口的标题信息;
  • 通过继承,在ui文件转换成相应的python代码的文件之外对槽函数的实现,这样成功分离UI和实现逻辑,同时也不会因为UI做了调整之后,重新生成py文件导致代码丢失的问题。

喜欢本文内容就收藏,点赞,评论,关注和转发。

pyqt5 qwidget有父类窗口如何设置模态_实战PyQt5: 024-Qt Designer进阶一相关推荐

  1. pyqt5获取文本框里输入的值_实战PyQt5: 060-输入对话框QInputDialog

    QInputDialog简介 在GUI应用中,经常有一些简单的输入信息需要交互,这时候可以使用QInputDialog来快速完成我们的工作,而不必创建一个新的对话框来实现. QInputDialog控 ...

  2. pyqt 子窗口控制主窗口绘图_实战PyQt5: 005-主窗口QMainWindow

    QMainWindow简介 在桌面应用中,一个应用软件通常都会包含一个主窗口,主窗口是承载所有控件的窗体, 在PyQt5中常用的主窗体有两种QMainWindow和QDialog,他们也都继承自QWi ...

  3. qchart 坐标轴设置_实战PyQt5: 156-QChart图表之更换图表主题

    图表主题 QChart定义了多种图表主题,可以创建不同风格的图表显示,在调整图表主题风格的时候,为了使整个应用的风格看起来更和谐一致,一般要使用应用程序的背景调色板来调整应用的颜色以适配图表所选的主题 ...

  4. pyqt5 qwidget 边框_实战PyQt5: 116-画刷类QBrush

    QBrush简介 QBrush类定义由QPainter绘制的形状的填充图案.一个画刷可以有颜色,填充图案,渐变和纹理属性. 样式填充使用Qt.BrushStyle枚举变量定义填充图案.默认的填充样式为 ...

  5. qss qmenu 设置icon位置大小_实战PyQt5: 125-使用配置文件来保存和恢复应用的设置...

    在通常情况下,用户使用一个软件的时候,期望保存一些数据状态,比如窗口的大小和位置,主题,选项,最近操作过的文件等等信息,在下一次启动软件的时候就自动加载这些信息,让软件恢复到上一次退出时的状态.在Wi ...

  6. PyQt5 技术篇-设置输入框的placeholder方法,Qt Designer设置Line Edit、Text Edit编辑框的placeholder

    PyQt5设置方法: self.lineEdit.setPlaceholderText("请输入要查询的内容") Qt Designer设置方法: Qt Designer里有个pl ...

  7. winform listview 设置选中项 图片_实战PyQt5: 069-MV框架中的项视图拖放功能

    模型-视图框架完全支持Qt的基本拖放操作,列表.树形和表格部件中的项可以在视图间拖动,数据可以以MIME类型的格式进行导入和导出 Qt提供的标准视图自动支持在视图内部的拖放,其中的项可以被移动以改变显 ...

  8. qchart 设置线颜色_实战PyQt5: 137-QChart图表之散点图

    散点图(scatter chart)将序列显示为一组点.值由点在图表中的位置表示.类别由图表中的不同标记表示.散点图通常用于比较跨类别的聚合数据.在QChart中,使用类QScatterSeries创 ...

  9. button 样式_实战PyQt5: 111-可以使用QSS样式表的部件

    可以使用QSS样式表的部件 QSS样式表支持各种部件,属性,伪状态和子控件,从而可以实现定制部件的外观,下面我们将详细列出可以使用QSS样式表的部件: QAbstractScrollArea:所有派生 ...

  10. qtabwidget的图标_实战PyQt5: 050-选项卡控件QTabWidget

    QTabWidget简介 在GUI应用软件中,多页面的切换的使用范围十分广泛,在操作过程中,用户使用鼠标点击不同的标题栏就可以方便展示不同页面的内容,众多界面共用一块显示区域,在有限的就显示区域中可以 ...

最新文章

  1. vsxxxx Avalon 感知提示
  2. javaweb学习总结(八)——HttpServletResponse对象(二)
  3. buu 萌萌哒的八戒
  4. 更改记录表CDHDR和CDPOS
  5. ftp服务器连接成功不显示端口,ftp被动联接端口是怎样确定的
  6. 如何用计算机求和,求和计算器
  7. java与.net平台之间进行RSA加密验证
  8. unity3d 求两个点长度_三年级上册求组合图形周长专项练习,附答案
  9. “使用 iNalyzer 分析应用程序的类结构”
  10. python find函数原理_Opencv findcontours函数原理,以及python numpy实现
  11. 线性代数---二阶行列式
  12. 读书笔记 大前研一《专业主义》
  13. 可乐要加冰才好喝啊---装饰模式
  14. python描述数据维度的含义_NumPy中的维度(dimension)、轴(axis)、秩(rank)的含义
  15. MFS(一)---mfs详解与部署
  16. 文件无访问权限解决办法
  17. 如何安装projectlombok
  18. 网盘搜索插件php源码,PHP网盘资源搜索源码 127盘搜网盘搜索神器 THINKPHP内核
  19. LeetCode - 771. Jewels and Stones
  20. 【html画板】网页画板绘画效果

热门文章

  1. ansible源码解读
  2. ngx_http_upstream_module模块学习笔记
  3. Openstack Nova network
  4. 数组及引用类型内存分配
  5. [js方法pk]之instanceof() vs isPrototypeOf() hasOwnProperty() vs propertyIsEnumerable()
  6. #100天计划# 2013年10月8日
  7. (转)用Javascript获取页面元素的位置
  8. 【feign源码】流程分析
  9. MySQL的回表查询与索引覆盖查询
  10. nacos心跳机制重复发送原理