Python:为按钮连接函数创建默认参数
Python: Creating Default Argument for Pushbutton Connected Function
我连接了一个 QPushButton 以通过以下方式触发功能:
self.pbLoad.clicked.connect(self.loadData)
这很好用,但是我想为该函数提供一个默认参数,以防我想在代码中手动加载文件(用于调试)。我试过了:
def loadData(self,fileName = None):
if fileName is None:
fileName = QtGui.QFileDialog.getOpenFileName(self, 'Choose data file to open', '.', filter='*.lvm')
if fileName:
self.filename = fileName
self.parseFilename()
但是这破坏了我的按钮并且它停止工作。同样,如果我将按钮连接为:
self.pbLoad.clicked.connect(self.loadData())
启动 GUI 后立即按下按钮。任何想法如何在不声明额外的包装函数的情况下使它工作?谢谢。
信号和插槽之间需要兼容。
在那种情况下,你的信号不发送任何参数,你的插槽必须没有参数。
我会使用包装函数作为插槽并调用您要测试的实际函数。
关于self.pbLoad.clicked.connect(self.loadData())
当您尝试 link 函数的按钮时,实际上是 CALL 函数:在这种情况下,您将按钮与函数的 return 赋值器连接,即 None,因此,不连接按钮。
我会使用:
def __init__(self):
self.pbLoad.clicked.connect(self.buttonClickedSlot)
def buttonClickedSlot(self):
self.loadData()
def loadData(self,fileName = None):
.....
我连接了一个 QPushButton 以通过以下方式触发功能:
self.pbLoad.clicked.connect(self.loadData)
这很好用,但是我想为该函数提供一个默认参数,以防我想在代码中手动加载文件(用于调试)。我试过了:
def loadData(self,fileName = None): if fileName is None: fileName = QtGui.QFileDialog.getOpenFileName(self, 'Choose data file to open', '.', filter='*.lvm') if fileName: self.filename = fileName self.parseFilename()
但是这破坏了我的按钮并且它停止工作。同样,如果我将按钮连接为:
self.pbLoad.clicked.connect(self.loadData())
启动 GUI 后立即按下按钮。任何想法如何在不声明额外的包装函数的情况下使它工作?谢谢。
信号和插槽之间需要兼容。
在那种情况下,你的信号不发送任何参数,你的插槽必须没有参数。
我会使用包装函数作为插槽并调用您要测试的实际函数。
关于self.pbLoad.clicked.connect(self.loadData())
当您尝试 link 函数的按钮时,实际上是 CALL 函数:在这种情况下,您将按钮与函数的 return 赋值器连接,即 None,因此,不连接按钮。
我会使用:
def __init__(self):
self.pbLoad.clicked.connect(self.buttonClickedSlot)
def buttonClickedSlot(self):
self.loadData()
def loadData(self,fileName = None):
.....