什么是信号与槽 ?
对象之间的通信用的技术是信号与槽。发生特定事件时会发出信号,发出的信号要连接一个槽。现在我们创建一个Pyside 2信号和槽的例子。
from PySide2.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox
import sys
from PySide2.QtGui import QIcon
class Window(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Pyside2 QPushButton")
self.setGeometry(500,400,500,400)
self.setIcon()
self.setButton()
def setIcon(self):
appIcon = QIcon("icon.png")
self.setWindowIcon(appIcon)
def setButton(self):
btn1 = QPushButton("Quit", self)
btn1.move(50,100)
btn1.clicked.connect(self.quiteApp)
def quiteApp(self):
userInfo = QMessageBox.question(self, "Confirmation", "Do You Want To Quit The Application",
QMessageBox.Yes | QMessageBox.No)
if userInfo == QMessageBox.Yes:
myapp.quit()
elif userInfo == QMessageBox.No:
pass
myapp = QApplication(sys.argv)
window = Window()
window.show()
myapp.exec_()
sys.exit()
首先,从PySide2引入要用到的库:
from PySide2.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox
import sys
from PySide2.QtGui import QIcon
使用Pyside 2创建一个QPushButton,然后,我们把点击事件的信号clicked连接到了quiteApp这个槽。
def setButton(self):
btn1 = QPushButton("Quit", self)
btn1.move(50,100)
btn1.clicked.connect(self.quiteApp)
quiteApp这个方法(槽)连接了QPushButton的点击事件
def quiteApp(self):
userInfo = QMessageBox.question(self, "Confirmation", "Do You Want To Quit The Application",
QMessageBox.Yes | QMessageBox.No)
if userInfo == QMessageBox.Yes:
myapp.quit()
elif userInfo == QMessageBox.No:
pass
运行看效果:
如果不清楚其它代码含义,请参考前面课程:
Python界面编程第一课:我们开始用Pyside2 (Qt For Python)
Python界面编程第二课:Pyside2 创建窗口 (Python GUI)
Python界面编程第三课:Pyside2 (Qt For Python)给窗口加个图标
Python界面编程第四课:Pyside2 (Qt For Python)创建图标模式
Python界面编程第五课:Pyside2 (Qt For Python)怎么创建控件提示Tooltip