为信号添加槽函数

在上一篇中,初步学会了如何使用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. Thinkphp5创建控制器
  2. Django View使用装饰器捕获数据库连接异常
  3. AC自动机的使用案例
  4. 今天的你将感谢_今天感谢开发人员:这是
  5. 简单的识别猫狗的模型
  6. mysql触发器中访问mssql数据表_[数据库]一个利用触发器(trigger)实现数据库表的审计功能(audit)的例子--针对ms sql实现...
  7. BZOJ3591 最长上升子序列(状压dp)
  8. WKWebview的内存问题
  9. 利用lavarel框架实现Todos App
  10. 【记录】AI换脸 桥本云龙你还喜欢吗 —— 玩转API第二弹
  11. html编辑器设置为publisher,Microsoft Publisher操作简介
  12. R 语言消除pdf图片的空白
  13. 安卓微信分享图标不显示的问题
  14. 网段划分 特殊网段(localhost0.0.0.01.1.1.1127.0.0.1)
  15. 数据结构——错误一览(概念类)
  16. 一个可以下载手机网站模板的工作室
  17. 联想台式计算机重装系统教程,联想台式机重装win7系统教程
  18. BZOJ 4372 烁烁的游戏
  19. Nginx的一些配置项,Nginx调优
  20. SCT2430STER电池应用

热门文章

  1. 【BZOJ1703】【usaco2007margold】ranking the cows 奶牛的魅力排名
  2. 拥抱模块化的javascript
  3. WEBFORM--第一讲
  4. MVC3开发常常遇到的问题及常常使用到的代码片段
  5. java对象的创建、java分配内存的方式、指针碰撞、空闲列表
  6. SpringApplication.run方法分析
  7. 数据结构之B+树插入详解
  8. spring事务传播机制源码学习笔记
  9. Spring源码之事务(一)
  10. String类的trim() 方法