PyQt5学习笔记(十二):信号槽连接滑块与 LCD

在学习笔记(四)中我们通过退出按钮初步接触了信号槽(signals & slots)的机制,可以说这个机制是 Qt 最具特色的地方也是其核心优势。信号是由事件(event)触发的,而事件在大多数情况行啊都是由用户通过鼠标、键盘等操作生成的。本文由 Cescfangs 译自ZetCode pyqt5系列教程 并作适当修改。

以下的代码通过QsliderQLCDNumber实现了一个简单的信号槽互动:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QSlider, QVBoxLayout


class exp(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):

        vbox = QVBoxLayout()

        lcd = QLCDNumber(self)
        slider = QSlider(Qt.Horizontal, self)

        vbox.addWidget(lcd)
        vbox.addWidget(slider)
        self.setLayout(vbox)

        slider.valueChanged.connect(lcd.display)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle(' signals-slots')

        self.show()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = exp()
    sys.exit(app.exec_())

先创建滑块和 LCD 部件:

lcd = QLCDNumber(self)
slider = QSlider(Qt.Horizontal, self)

然后通过QVboxLayout来设置布局,这个例子中最需要说的是:

slider.valueChanged.connect(lcd.display)

valueChanged()Qslider的一个信号函数,只要slider的值发生改变,它就会发射一个信号,你还可以设置参数控制信号在什么时候发射,然后通过connect连接信号的接收部件,也就是lcd,槽则是针对信号的一个反馈,这里是lcd.display,即更新LCD面板的数字信息。

除了valueChanged()之外,Qslider还有sliderPressured(),sliderMoved(),sliderReleased() 这些信号,详细可参考Qt官方文档。

PyQt5学习笔记(十二):信号槽连接滑块与 LCD_第1张图片
slider.gif

你可能感兴趣的:(PyQt5学习笔记(十二):信号槽连接滑块与 LCD)