跳至主要內容

Pyqt5教程四:事件与信号

yczha大约 1 分钟PyQT5pythonpythonguipyqt5

这篇文章是Python GUI教程系列的第四篇,将介绍Qt编程中的事件与信号机制;如果你英文较好,可以参考这里的文章:PYQT5open in new window

  • STEP 1:Qt中的通信机制:事件与信号

    • 界面中各组件及界面之间往往需要消息的传递,比如:点击一个按钮跳转到一个网页等。Qt中通过信号与槽机制来传递信号

    • 事件与信号:事件指的是一个行为的触发,比如:点击按钮、关闭页面、最大化最小化窗口等,而信号就是在事件触发时产生的消息,比如:点击关闭按钮产生一个关闭窗口的消息,等。

  • STEP 2:事件与信号实现:以下程序在滑动条值改变的时候发送一个消息(自身的值)给LCD显示窗口,然后LCD显示器实时显示滑动条的值。

    # -*- coding: utf-8 -*-
    
    """
    该程序实现布局器的复合使用
    Author: yooongchun
    Time: 2018-05-09
    """
    
    import sys
    from PyQt5.QtWidgets import QPushButton,QWidget,QLineEdit,QTextEdit, QAction, qApp, QApplication,QWidget,QLabel,QGridLayout,QLCDNumber,QSlider,QVBoxLayout
    from PyQt5.QtGui import QIcon
    from PyQt5.QtCore import Qt
    # 事件与信号
    class Event(QWidget):
        def __init__(self):
            super().__init__()
            self.initUI()
    
        def initUI(self):
            lcd = QLCDNumber(self)
            sld = QSlider(Qt.Horizontal, self)
    
            vbox = QVBoxLayout()
            vbox.addWidget(lcd)
            vbox.addWidget(sld)
    
            self.setLayout(vbox)
            sld.valueChanged.connect(lcd.display)
    
            self.setGeometry(300, 300, 250, 150)
            self.setWindowTitle('Signal & slot')
            self.show()
    
    if __name__=="__main__":
        app = QApplication(sys.argv)
        ex = Event()
        sys.exit(app.exec_())