当前位置: 首页 > 编程笔记 >

事件处理示例(2)-PyQt

白修谨
2023-03-14
本文向大家介绍事件处理示例(2)-PyQt,包括了事件处理示例(2)-PyQt的使用技巧和注意事项,需要的朋友参考一下

让我们尝试一些更有趣的东西,

1)键盘产生的事件

在执行程序之前,让我们尝试了解代码的关键点。这将有助于我们了解事件,信号和时段的性质。让我们一一研究它们:

  • 这里使用一个简单的窗口作为界面。

  • keyPressEvent(),这只是PyQt框架中的预定义函数;用于定义所生成按键事件的功能。请注意,您无法更改其功能名称;您可以根据需要定义其参数内容和函数主体。

  • e.key()== QtCore.Qt.Key_Escape在keyPresssEvent()函数下使用。在这里,key_Escape用来表示我们将要生成的事件的键是Escape键。

  • self.close()-每当按下Escape键时,此函数将用于关闭程序。

源代码:

import sys
from PyQt4 import QtGui, QtCore
class Body(QtGui.QWidget):    
    def __init__(self):
        super(Body, self).__init__()
        self.initializeUI()
        
    def initializeUI(self):      
        self.setGeometry(400, 400, 250, 150)
        self.setWindowTitle('keyboard-Event handler')
        self.show()
        
    def keyPressEvent(self, e):
        if e.key() == QtCore.Qt.Key_Escape:
            self.close()
        
def main():
    
    app = QtGui.QApplication(sys.argv)
    e = Body()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

输出结果


每当您运行程序时,都会弹出此非常简单的窗口。之后,您只需要按Escape键即可;并且程序将关闭,导致GUI窗口也关闭。为了更好地理解,请尝试按其他键,您将不会获得任何视觉响应。

2)Slider产生的事件

现在,让我们尝试了解第二个程序的代码。考虑到我们只关注关键部分:

    list-paddingleft-2">
  • lcd = QtGui.QLCDNumber()函数已用于启动LCD编号显示。

  • slide = QtGui.QSlider(QtCore.Qt.Horizontal,self)用于实例化水平滑块小部件。

  • QVBoxLayout()函数用于实例化可视BOX(一种主窗口小部件)。

  • box.addWidget(lcd)和box.addWidget(slide)用于将滑块和LCD Number小部件添加到VBOX布局。

  • 与LCD显示器一起作为参数传递的slide.valueChanged.connect(lcd.display)函数,以将显示器与滑块移动连接起来。

源代码:

import sys
from PyQt4 import QtGui, QtCore
class Body(QtGui.QWidget):
    def __init__(self):
        super(Body, self).__init__()
        self.initializeUI()
        
    def initializeUI(self):
        
        lcd = QtGui.QLCDNumber(self)
        slide = QtGui.QSlider(QtCore.Qt.Horizontal, self)

        box = QtGui.QVBoxLayout()
        box.addWidget(lcd)
        box.addWidget(slide)

        self.setLayout(box)
        slide.valueChanged.connect(lcd.display)
        
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Slider Signal')
        self.show()
        
def main():
    app = QtGui.QApplication(sys.argv)
    e = Body()
    sys.exit(app.exec_())
if __name__ == '__main__':
    main()

输出结果


运行程序时将弹出此布局窗口。向右或向左移动滑块时,LCD值将相应改变。您可以通过两种方式执行此操作:a。)左键单击滑块指针并将其向右或向左拖动。b。)按键盘上的向左或向右键

结论:

最后,我将得出结论,有多个小部件,它们以多种方式创建事件。但是处理它们的信号和时隙需要相当类似的努力。到目前为止,我们已经研究了五个有用的事件处理示例。还有更多要去的地方。保持练习。询问何时遇到麻烦,并发表您的创作和发现。
下一篇文章稍后会吸引您。快乐的学习!

 类似资料:
  • 本文向大家介绍事件处理示例-PyQt,包括了事件处理示例-PyQt的使用技巧和注意事项,需要的朋友参考一下 按钮接受您的命令 1.在Python Shell或CMD提示符下获取输出 之前,我们深入研究了源代码及其引人入胜的输出。让我在此程序的几个关键部分为您提供帮助: window()是此处的用户定义函数,我们在其中设计并绘制了布局框架。 我们在这里使用了一个使用QDialog()的对话框。您可以

  • 本文向大家介绍HTML5 CORS中的事件处理程序示例,包括了HTML5 CORS中的事件处理程序示例的使用技巧和注意事项,需要的朋友参考一下 跨域资源共享(CORS)是一种允许来自Web浏览器中另一个域的受限资源的机制 假设,如果您在html5演示部分中单击HTML5-视频播放器。它将询问相机许可。如果用户允许该权限,则只有它会打开相机,否则不会为Web应用程序打开相机。 以下是CORS中事件处

  • 我们需要在constructor中对于事件与对应的handler函数进行绑定. 大多数时候我们在发出DOM事件的组件内部写我们的handler函数. 在下面的例子中,我们在组件内部创建了一个click handler, 因为我们想所有的Swithcer Component当被点击时,做出同样的响应. class Switcher extends React.Component { render

  • 我不喜欢流口水。我正在尝试使用Drools Fusion编写一个简单的复杂事件处理(CEP)应用程序。 我的要求是 我有一个简单的Event类,如下所示: 规则文件如下: 为了进行测试,我将向工作内存中注入4个事件,分别是e1、e2、e3、e4,时间线分别为0m、4m、10m、12m。 Jave类文件 我希望e1通过规则,因为它没有前面的事件。我还预计e3将通过,因为前面的比赛还有6分钟。 但是,

  • 事件处理概述 事件处理是对象化编程的一个很重要的环节,没有了事件处理,程序就会变得很死,缺乏灵活性。事件处理的过程可以这样表示:发生事件 - 启动事件处理程序 - 事件处理程序作出反应。其中,要使事件处理程序能够启动,必须先告诉对象,如果发生了什么事情,要启动什么处理程序,否则这个流程就不能进行下去。事件的处理程序可以是任意 JavaScript 语句,但是我们一般用特定的自定义函数(functi

  • Mpx在事件处理上基于原生小程序,支持原生小程序的全部事件处理技术规范,在此基础上新增了事件处理内联传参的增强机制。 原生小程序事件处理详情请参考这里 增强的内联传参能力对于传递参数的个数和类型没有特殊限制,可以传递各种字面量,可以传递组件数据,甚至可以传递for中的item和index, 当内联事件处理器中需要访问原始事件对象时,可以传递$event特殊关键字作为参数,在事件处理器的对应参数位置