事件处理示例(2)-PyQt
让我们尝试一些更有趣的东西,
1)键盘产生的事件
在执行程序之前,让我们尝试了解代码的关键点。这将有助于我们了解事件,信号和时段的性质。让我们一一研究它们:
这里使用一个简单的窗口作为界面。
keyPressEvent(),这只是PyQt框架中的预定义函数;用于定义所生成按键事件的功能。请注意,您无法更改其功能名称;您可以根据需要定义其参数内容和函数主体。
e.key()== QtCore.Qt.Key_Escape在keyPresssEvent()函数下使用。在这里,key_Escape用来表示我们将要生成的事件的键是Escape键。
self.close()-每当按下Escape键时,此函数将用于关闭程序。
源代码:
import sysfrom 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产生的事件
现在,让我们尝试了解第二个程序的代码。考虑到我们只关注关键部分:
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 sysfrom 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。)按键盘上的向左或向右键。
结论:
最后,我将得出结论,有多个小部件,它们以多种方式创建事件。但是处理它们的信号和时隙需要相当类似的努力。到目前为止,我们已经研究了五个有用的事件处理示例。还有更多要去的地方。保持练习。询问何时遇到麻烦,并发表您的创作和发现。
下一篇文章稍后会吸引您。快乐的学习!
以上是 事件处理示例(2)-PyQt 的全部内容, 来源链接: utcz.com/z/315862.html