【发布时间】:2019-10-18 16:57:42
【问题描述】:
当通过信号连接调用函数时
mybutton.clicked.connect(myfunction)
调用该函数时,其所有参数都设置为 False。即使已设置默认参数。这是预期的行为吗?
下面的代码显示了一个简单的示例。对于我的特殊情况,将所有参数设置为 False 并不是一个大问题,因为我可以简单地用 if 语句来捕捉它。但是,我认为了解为什么以这种方式实施它可能对进一步的项目有所帮助。
这个简单的程序显示了我所期望的行为。
def function(foo=None):
print(foo)
function()
无
但是,在这个最小的 Qt 示例中,函数参数不再是“None”,而是“False”。
import sys
from PyQt5.QtWidgets import QMainWindow, QGridLayout, QWidget, QPushButton, QApplication
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
centralWidget = QWidget(self)
self.setCentralWidget(centralWidget)
gridLayout = QGridLayout(self)
centralWidget.setLayout(gridLayout)
btn = QPushButton("button",self)
gridLayout.addWidget(btn)
btn.clicked.connect(self.function)
def function(self, foo=None):
print(foo)
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()
sys.exit( app.exec_() )
错误
我想,问题是:我是否必须忍受在我的函数中没有可用的默认值(即,一旦我注意到它们被设置为 False,我是否需要重置它们)或者有什么更聪明的方法吗?处理它?
【问题讨论】:
-
我的猜测是because the
clicked()event sends a parameterchecked,你看到的是那个值。可以通过设置两个默认值参数来验证吗?
标签: python pyqt pyqt5 qpushbutton