关于事件的使用

时间:2016-12-24 22:35:33

标签: python events pyqt4

我正在用pyqt4在python 2.7中构建一个GUI。我想将一个按钮链接到脚本,有人向我提供了以下代码:

from PyQt4 import QtGui
import sys

# --- functions ---

def my_function(event=None):
    print 'Button clicked: event:', event
    print linetext.text()

    # run your code

# --- main ---

app = QtGui.QApplication(sys.argv)

window = QtGui.QWidget()

# add "layout manager"
vbox = QtGui.QVBoxLayout()
window.setLayout(vbox)

# add place for text
linetext = QtGui.QLineEdit(window)
vbox.addWidget(linetext)

# add button 
button = QtGui.QPushButton("Run", window)
vbox.addWidget(button)

# add function to button 
button.clicked.connect(my_function)

window.show()

sys.exit(app.exec_())

我不明白为什么你会将event=None作为my_function的参数传递。当我在没有事件部分的情况下运行脚本时,它可以正常工作。

1 个答案:

答案 0 :(得分:1)

不需要。

在Qt中,事件和信号/插槽是两个独立的系统。一般来说,事件最终来自应用程序的外部(例如键盘按下,鼠标移动等),而信号来自应用程序中

点击是事件的组合(鼠标按下+鼠标释放),它们最初由Qt内部处理。然后,事件处理程序会在适当的时候发出clicked信号。

clicked信号实际上发送了检查状态(即TrueFalse),而不是事件对象。但这与你的剧本并不相关(也就是说,你不需要为它提供论据)。