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官方文档。

slider.gif

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转自:作者简介作者:唐新华 (xhsmart@263.net)软件工程师    信号和槽作为QT的核心机制在QT编...
    njukay阅读 1,359评论 0 49
  • 信号和槽(Signals and Slots) Qt库第一个认识到在几乎所有情况下,程序员不需要或甚至不想知道所有...
    珞珈村下山阅读 9,886评论 0 23
  • 韩元旭、余橙、沈开洋 Qt介绍 Qt是一个跨平台的C++图形用户界面应用程序框架。它早在1991年奇趣科技公司两位...
    开洋_shen阅读 16,231评论 4 24
  • Qt学习 模拟登陆界面 登陆账号密码成功时输出ok,否则error 实际效果 将password的echo模式改为...
    I踏雪寻梅阅读 13,259评论 0 5
  • 生于冷。 养于冷。 爱于冷。 而,冷于冷, 山有多高,月就有多小。 云有多暗,愁就有多深。 而残阳,只有一寸。 残...
    夜戈阅读 392评论 1 2