Python:为按钮连接函数创建默认参数

2024-10-01 13:36:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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后,立即按下该按钮。你知道如何在不声明额外包装器函数的情况下让它工作吗?谢谢


Tags: 函数代码self功能noneifconnect方式
1条回答
网友
1楼 · 发布于 2024-10-01 13:36:31

您需要在信号和插槽之间具有兼容性

在这种情况下,您的信号不发送参数,您的插槽必须没有参数

我将使用包装器函数作为插槽,并调用要测试的实际函数

关于self.pbLoad.clicked.connect(self.loadData())

当您尝试将按钮链接到函数时,实际上调用了函数:在这种情况下,您将按钮与函数的返回值相连接,返回值为None,因此,不连接按钮

我会使用:

def __init__(self):
   self.pbLoad.clicked.connect(self.buttonClickedSlot)
def buttonClickedSlot(self):
   self.loadData()
def loadData(self,fileName = None):
   .....

相关问题 更多 >