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 toself.btnUpdateList.clicked.connect(lambda:OperationsConfigles.updateList())
或self.btnUpdateList.clicked.connect(OperationsConfigles.updateList)
我尝试了你的建议。它很有效。是的,我不得不删除\uuu init\uuuuu
。我在笔记中记下了你的建议。谢谢你的快速回复和帮助