PyQt4信号与槽

事件

事件(Events)是GUI程序中很重要的一部分。它由用户或系统产生。当我们调用程序的exec_()方法时,程序就会进入主循环中。主循环捕获事件并将它们发送给相应的对象进行处理。奇趣公司(Trolltech)引入了信号和槽机制。

信号与槽

当用户单击一个按钮,拖动一个滑块或进行其它动作时,相应的信号就会发射。除此之外,信号还可以因为环境的变化而被发射。比如一个运动的始终将会发射事件信号等。而所谓的槽则是一个方法,该方法将会响应它所连接的信号。在Python中,槽可以是任何可以被调用的对象。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui, QtCore

class SigSlot(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)

        self.setWindowTitle(‘moonlight poet signal & slot‘)
        lcd = QtGui.QLCDNumber(self)
        slider = QtGui.QSlider(QtCore.Qt.Horizontal, self)

        vbox = QtGui.QVBoxLayout()
        vbox.addWidget(lcd)
        vbox.addWidget(slider)

        self.setLayout(vbox)
        self.connect(slider, QtCore.SIGNAL(‘valueChanged(int)‘),
                     lcd, QtCore.SLOT(‘display(int)‘))
        self.resize(250, 150)

app = QtGui.QApplication(sys.argv)
ss = SigSlot()
ss.show()
sys.exit(app.exec_())

效果:

在这个示例中,我们创建了一个LCD显示器和一个滑块,拖动滑块我们可改变LCD显示其的数字。

self.connect(slider, QtCore.SIGNAL(‘valueChanged(int)‘),
                     lcd, QtCore.SLOT(‘display(int)‘))

这里我们将滑块的valueChanged()信号连接到LCD显示其的display()槽函数上。连接方法connect有4个参数:信号发送者对象(这里是slider对象),要发射的信号(这里是valueChanged信号),信号的接受者对象(这里是lcd对象),对信号作出响应的槽函数(这里是display函数)。

时间: 2024-09-28 21:32:42

PyQt4信号与槽的相关文章

PyQt4信号和槽

每个GUI库都提供了事件发生的不少细节,如鼠标点击.键盘按键等.例如,如果用户点击了一个写有Click Me的按钮后,按钮所附带的信息就会变成可用.GUI库可以告知我们 鼠标点击时与按钮的相对坐标,与按钮相应的父窗口部件,还有与屏幕相关的信息:GUI库还 会给出Shift.Ctrl.Alt以及NumLock键在当时的状态:也会给出按下和松开按钮的精确时间等.如果用户通过非鼠标点击的其他方式按下按钮,也应该能够提供相类似的信息.用户也有可能通过多次使用Tab键来把光标移动到按钮上,之后再按下空格,

pyqt信号和槽传递额外参数

环境: python2.7.8 pyqt 4.11.1 使用Pyqt编程过程中,经常会遇到给槽函数传递额外参数的情况.但是信号-槽机制只是指定信号如何连接到槽,信号定义的参数被传递给槽,而额外的参数(用户定义)不能直接传递. 而传递额外参数又是很有用处.你可能使用一个槽处理多个组件的信号,有时要传递额外的信息. 一种方法是使用lambda表达式. from PyQt4.QtCore import * from PyQt4.QtGui import * class MyForm(QMainWind

【C/C++学院】(13)QT开发技术/QT 基础/QT 信号和槽

Qt是一个跨平台的c++图形用户界面用用程序框架. Qt安装说明: windows下环境变量path需要加入以下路径,以便QT写的程序可以离开QT开发环境独立运行 C:\Qt\Qt5.2.0\5.2.0\mingw48_32\bin\;C:\Qt\Qt5.2.0\Tools\mingw48_32\bin; linux下需要设置.bash_profile文件 PATH中加入/opt/Qt5.2.0/5.2.0/gcc/bin 用root用户登录系统,进入/usr/lib目录后执行 ln libGL

第78课 多线程中的信号与槽(上)

1. QThread类中的信号和槽 (1)QThread类拥有发射信号和定义槽函数的能力 (2)QThread中的关键信号 ①void started():线程开始运行时发射该信号 ②void finished():线程完成运行时发射该信号 ③void terminated():线程被异常终止时发射该信号 2. 与线程相关的概念 (1)线程栈 ①进程中存在栈空间的概念(区别于栈数据结构) ②栈空间专用于函数调用(保存函数参数.局部变量等) ③线程拥有独立的栈空间(可调用其它函数) ④只要函数体中

1.3 初步了解信号和槽

在Qt中,如何响应动作.这会用到Qt的信号和槽机制. 我的理解:它和Win32程序的消息响应机制差不多吧. 信号,简单理解就是:当我们点击一个按钮时,这个按钮自身就会产生一个叫作"单击"的信息,这个信息说明了刚刚我们点击了这一个按钮.产生的这个信息就相当于自己发射了一个信号,表明一个用户动作已经发生了或者是一个状态已经改变了.这就是信号(signal). 槽,可以理解为:当这个按钮发射了这个信号之后,假如有一个"监听员"发现了这个信号,它会马上做出响应,做相应的动作

QT学习小结之信号与槽

信号与槽函数是我们学习QT必备的基础知识,今天跟大家分享我学习QT的一些总结吧. 信号槽机制是Qt编程的基础.通过信号槽,能够使Qt各组件在不知道对方的情形下能够相互通讯. 槽函数和普通的C++成员函数没有很大的区别.它们也可以使virtual的:可以被重写:可以使public.protected或者private的:可以由其它的C++函数调用:参数可以是任何类型的.如果要说区别,那就是,槽函数可以和一个信号相连接,当这个信号发生时,它可以被自动调用. 信号与槽函数的连接我们可以用connect

QT 的信号与槽

转载: QT 的信号与槽机制介绍 QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象.易于扩展.真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT 库的基础之上.QT 支持下列平台:MS/WINDOWS-95.98.NT 和 2000:UNIX/X11-Linux.Sun Solaris.HP-UX.Digital Unix.IBM AIX.SGI IRIX:EMBEDDED- 支持 framebuffer

QT5中的信号与槽与C++ 11的function的配合

最近将公司的界面开发库从WX转换到了QT,有了信号和槽,原本我们在使用WX的时候,为了使用信号,我们是使用BOOST的signal2库,到了QT有了信号槽,这个就没什么必要了 但是前段时间使用QT发现QT的信号和槽没有placeholder,也就是占位符,于是信号和槽声明只能严格地一样,比如 void slot(int val); void signal( int val); 但是在signals2,我们可用利用placeholder,及时函数声明不一样,也可用进行connect void sl

Qt的信号与槽机制

1.信号和槽机制是QT的核心机制,要精通QT编程就必须对信号和槽有所了解. 2.信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方. 3.信号和槽是QT自行定义的一种通信机制,它独立于标准的C/C++语言,因此要正确的处理信号和槽,必须借助一个称为moc(Meta Object Compiler)的QT工具,该工具是一个C++预处理程序,它为高层次的事件处理自动生成所需要的附加代码. 4.在我们所熟知的很多GUI工具包中,窗口小部件(widget