这里通过两个案例来介绍一下信号与槽。第一个案例是用过点击按钮,通过click信号连接自定义的槽函数,来打印出来一句话。第二个案例是监听窗口的标题变化,并为窗口名添加前缀。
案例1
通过点击按钮打印一句话:
# -*- coding: UTF-8 -*-
from PyQt5.Qt import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("学习")
self.resize(500, 500)
self.setup_ui()
def setup_ui(self):
self.ObjectOperation()
def ObjectOperation(self):
"""***********信号与槽的第一个案例********"""
btn = QPushButton(self)
btn.setText("我是按钮点击我")
# 定义一个槽函数
def cao():
print("点我干啥")
# clicked表示按钮的点击信号
btn.clicked.connect(cao)
# 方便在模板里进行调试
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())
案例2
在所有窗口修改窗口的标题时,添加前缀52txr-
,例如修改标题为HELLOPYQT
,会自动修改为52txr-HELLOPYQT
,并且要支持多次修改。
涉及知识点:
- 设置窗口标题
- 监听窗口标题发生改变
- 临时取消/恢复信号与槽之间的链接
# -*- coding: UTF-8 -*-
from PyQt5.Qt import *
# 方便在模板里进行调试
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
window = QWidget()
# 连接窗口变化的信号与槽
def cao(title):
print("变化了", title)
# window.windowTitleChanged.disconnect() # 断开,防止递归
window.blockSignals(True)
window.setWindowTitle("52txr-"+title)
# window.windowTitleChanged.connect(cao) # 恢复连接
window.blockSignals(False)
window.windowTitleChanged.connect(cao)
window.setWindowTitle("HELLO PYQT1")
# window.setWindowTitle("HELLO PYQT2")
# window.setWindowTitle("HELLO PYQT3")
window.show()
sys.exit(app.exec_())
3 条评论
来了来了,围观大佬,看来这是要自己开发应用程序的节奏了
ip咋又跑去山东了,不在北京了
用PyQt做封装,后面反正abaqus二次开发也是基于Python,准备直接上Python全家桶了,学的C++版本QT懒得复习了 
现在没开代理,所以在山东啊
,,python是个好东西,我估计我以后也是python全家桶了