美文网首页程序员首页投稿(暂停使用,暂停投稿)
PyQt5学习笔记(十二):信号槽连接滑块与 LCD

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

作者: 链球选手 | 来源:发表于2016-05-17 10:09 被阅读2335次

    学习笔记(四)中我们通过退出按钮初步接触了信号槽(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官方文档。

    slider.gif

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/jwcirttx.html