事件

事件(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函数)。

最新文章

  1. APUE学习之出错处理
  2. 大数据架构师NoSQL建模技术
  3. 用webdriver+phantomjs实现无浏览器的自动化过程
  4. sorttable
  5. hdu4737 A Bit Fun ——O(n)做法、错误的做法 + 正确做法
  6. C#基础总结之一变量常量-if嵌套语句-witch结构-类型转换
  7. PostgreSQL中关于关键字(保留字)在表名和字段名中的应用文件解决
  8. 创建一个目录info,并在目录中创建一个文件test.txt,把该文件的信息读取出来,并显示出来
  9. 7-2 DBA顾问第一次上次操作考试
  10. jquery mobile图片自适应屏幕
  11. CodeForces 591B
  12. mysql中varchar最长多少
  13. jQuery实现按键盘方向键翻页
  14. web浏览器中javascript
  15. 分布式服务框架HSF
  16. HttpClient在.NET Core中的正确打开方式
  17. vscode 插件 与 技巧
  18. Django2.0版本 path与Django1.x版本url正则匹配问题
  19. document.getElementsByClassName() 原生方法 通过className 选择DOM节点
  20. [springBoot系列]--springBoot注解大全[转]

热门文章

  1. AM335X can驱动移植
  2. Rails NameError uninitialized constant class solution
  3. node-webkit连接mysql
  4. 关于ARM中的tst、cmp、bne、beq指令
  5. Qt Creater中Clang-format的使用
  6. 测试x264编码器的低延时编码和非延时编码
  7. 关于RSSI的问题
  8. Perl Spreadsheet::WriteExcel 模块自动生成excel 文件
  9. write solid code 零散(原文)
  10. Tomcat源码学习