事件处理示例(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()

输出结果

python中的事件处理-pyqt 1

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

2)Slider产生的事件

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

  • 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()

输出结果

python中的滑块事件处理-pyqt 2

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

结论:

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