IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> PyQt:关于信号与槽的简单小实例(上) -> 正文阅读

[Python知识库]PyQt:关于信号与槽的简单小实例(上)

实例1:设计一个程序, 点击"退出"按钮后退出程序

1. 在PyCharm中右键project --> External Tools --> QtDesigner
? ? 打开后在新建窗体中选择 Main Window,点击创建。

2.在左侧的 Widget Box 中找到 Push Button ,拖进界面中,双击PushButton,将文本值改为'关闭'

3.点击左上角工具栏中的"编辑信号/槽",此时可以看到Widget Box 变为灰色;鼠标点击Button拖动至空白处松开,此时会弹出配置链接框。

4. 在pushButton中选择clicked()信号,勾选左下角的从QWidget继承的信号和槽,在右边MainWindow中选择close()作为槽函数,点击OK。

?5. 将文件保存为.ui文件,这里保存为SigAndSlot.ui。(此时左边的Widget Box依旧是灰色的不可选状态,左上角工具栏的"编辑信号/槽"左边有个"编辑窗口部件",点击一下就恢复啦~)

也可以通过右下角的信号/槽编辑器进行设置

6. 返回PyCharm界面,可以看到项目下生成了SigAndSlot.ui文件,右键点击该文件,选择External Tools?,选择PyUIC,生成对应的python文件: SigAndSlot.py

?

?文件中定义了类Ui_MainWindow,以代码方式绘制出了界面,主要看以下几行:

self.retranslateUi(MainWindow)
self.pushButton.clicked.connect(MainWindow.close) #这里将信号与槽函数进行连接
QtCore.QMetaObject.connectSlotsByName(MainWindow)

7. 现在新建一个python文件开始编写代码(由于 SigAndSlot.py 每次都会随着ui文件改动而刷新,所以不建议在其中加入我们的代码修改,因为只要ui文件有改动一转换我们的修改就会被覆盖了。最好的方式是另起一个python文件,在其中继承这个类,并进行代码修改,这也符合界面设计与逻辑分开的思想。)

?8. 编写一个类继承Ui_MainWindow以及程序入口

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from SigAndSlot import *    #导入ui转换的模块

class MyWindow(QMainWindow,Ui_MainWindow): #定义MyWindow类来继承Ui_MainWindow
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)
        self.setupUi(self)

if __name__ == '__main__':
    app = QApplication(sys.argv) #Qt接管
    myWin = MyWindow()    #实例化控件
    myWin.show()          #显示控件
    sys.exit(app.exec_()) #进入事件循环,可以理解开始监控处理所有事件

?9. 运行程序,看看结果:点击关闭按钮,窗口消失~

最简单的信号槽小程序就完成啦,还可以自己尝试拓展一下:
拖动水平条,对应显示出进度~


?实例2:设计一个程序,点击按钮,弹出消息提示框

?假设我们希望在收到信号的时候打印出提示信息,或者做其它的动作,那么上面的内置槽函数显然不能满足。这时候,就需要我们自定义槽函数来满足需求。

?1. 首先还是在Qt Designer中,拖动Push Button 到界面上,修改为text值为"测试",先添加一个信号和槽(这里只是为了方便演示在代码中的位置),保存文件。

?

?2. 返回到PyCharm中,右键SigAndSlot.ui --> External Tools -->PyUIC 更新对应的py文件。(如果忘记这一步一会运行还是显示之前的界面喔)

3. 在SigAndSlot.py中找到信号槽的相关代码,由于我们要自定义槽函数,这里将该行注释掉。

self.retranslateUi(MainWindow)
#self.pushButton.clicked.connect(MainWindow.close)  将这一行注释
QtCore.QMetaObject.connectSlotsByName(MainWindow)

4. 新建一个python文件,加入以下代码:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow,QPushButton,QWidget
from PyQt5.QtWidgets import QMessageBox
from SigAndSlot import *

class MyWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.showMsg) #将click信号与自定义槽函数showMsg绑定

    def showMsg(self):#自定义槽函数
        QMessageBox.information(self, "信息提示框", "ok, 弹出测试信息")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    myWin = MyWindow()
    myWin.show()
    sys.exit(app.exec_())

5. 运行程序:

?今天的教程到此结束了,欢迎评论区讨论~丿^ ^丿

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:28:29  更:2021-09-04 17:28:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 0:17:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计