Python 没有参数的函数不起作用。但是为什么呢?

Python 没有参数的函数不起作用。但是为什么呢?,python,lambda,pyqt,Python,Lambda,Pyqt,我想问一个简单的问题。我有两门课。我有很多功能。我将函数保存在类操作配置文件()上,将ui元素保存在类ui\u主窗口(对象)上。我使用了一个带有liste参数的btnSetRandomWallpaper按钮调用settingrandomwallper()函数,但它不起作用。因此,我在那里使用了lambda。然后它就起作用了。 我试图用我的另一个函数updateList()做同样的事情。它没有任何论据。同样的错误,我也在那里使用了lambda。没有错误,但也没有行动。我漏掉了一点吗?还是什么 cl

我想问一个简单的问题。我有两门课。我有很多功能。我将函数保存在
类操作配置文件()
上,将ui元素保存在类
ui\u主窗口(对象)
上。我使用了一个带有
liste
参数的
btnSetRandomWallpaper
按钮调用
settingrandomwallper()
函数,但它不起作用。因此,我在那里使用了
lambda
。然后它就起作用了。 我试图用我的另一个函数
updateList()
做同样的事情。它没有任何论据。同样的错误,我也在那里使用了
lambda
。没有错误,但也没有行动。我漏掉了一点吗?还是什么

class operationsOnFiles():
    def settingRandomWallpaper(self, liste):
        super().__init__()
        selectedWallpaper = random.choice(liste)
        os.system("gsettings set org.gnome.desktop.background picture-uri /home/$USER/Projects/src/" + selectedWallpaper)
    def updateList():
        super().__init__()
        Ui_MainWindow.listWidget.addItems(selfish.wallpapers)
selfish = operationsOnFiles()

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        self.btnSetRandomWallpaper.clicked.connect(lambda: selfish.settingRandomWallpaper(selfish.wallpapers))
        self.btnUpdateList.clicked.connect(lambda: operationsOnFiles.updateList)

首先,您需要将参数
self
添加到函数中

然后,您需要将ui元素的命令更改为:

lambda:operationsOnFiles.updateList
致:

lambda:operationsOnFiles.updateList()

调用
connect
事件时不带参数。如果目标函数需要一些在创建侦听器时已知的参数,则可以使用
lambda
绑定该值。如果目标不需要参数,则不需要中间
lambda
。在您的例子中,问题是您创建了一个只返回所需方法的
lambda
。它至少应该调用该方法。但是因为它不需要额外的参数,所以根本不需要lambda

self.btnUpdateList.clicked.connect(operationsOnFiles.updateList)

这将暴露您代码中的下一个错误,
updateList
需要一个self(
def updateList(self):
。然后调用super的
\uuuu init\uuuuu
真的很奇怪。

请提供一个我尽了最大努力的示例。希望我做得很好。不,这不是一个MRETYPO:change to
self.btnUpdateList.clicked.connect(lambda:OperationsConfigles.updateList())
self.btnUpdateList.clicked.connect(OperationsConfigles.updateList)
我尝试了你的建议。它很有效。是的,我不得不删除
\uuu init\uuuuu
。我在笔记中记下了你的建议。谢谢你的快速回复和帮助