没有参数的函数不起作用。但为什么?
function without argument doesnt work. but why?
我想问一个简单的问题。我有 2 classes。我有很多功能。我在 class operationsOnFiles()
上保留函数,在 class UI_MainWindow(object)
上保留 ui 元素。我使用带有 liste
参数的 btnSetRandomWallpaper
按钮调用 settingRandomWallpaper()
函数,但它没有用。所以我在那里使用了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-element的命令改成:
lambda: operationsOnFiles.updateList
至:
lambda: operationsOnFiles.updateList()
connect
事件调用时没有参数。如果目标函数需要一些在创建侦听器时已知的参数,您可以使用 lambda
来绑定该值。如果目标不需要参数,则不需要中间lambda
。在你的情况下,问题是你创建了一个 lambda
只是 returns 你想要的方法。至少它应该 调用 方法。但是因为它不需要额外的参数,所以根本不需要 lambda。
self.btnUpdateList.clicked.connect(operationsOnFiles.updateList)
这将暴露您代码中的下一个错误,updateList
需要一个 self (def updateList(self):
。然后调用 super 的 __init__
真的很奇怪。
我想问一个简单的问题。我有 2 classes。我有很多功能。我在 class operationsOnFiles()
上保留函数,在 class UI_MainWindow(object)
上保留 ui 元素。我使用带有 liste
参数的 btnSetRandomWallpaper
按钮调用 settingRandomWallpaper()
函数,但它没有用。所以我在那里使用了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-element的命令改成:
lambda: operationsOnFiles.updateList
至:
lambda: operationsOnFiles.updateList()
connect
事件调用时没有参数。如果目标函数需要一些在创建侦听器时已知的参数,您可以使用 lambda
来绑定该值。如果目标不需要参数,则不需要中间lambda
。在你的情况下,问题是你创建了一个 lambda
只是 returns 你想要的方法。至少它应该 调用 方法。但是因为它不需要额外的参数,所以根本不需要 lambda。
self.btnUpdateList.clicked.connect(operationsOnFiles.updateList)
这将暴露您代码中的下一个错误,updateList
需要一个 self (def updateList(self):
。然后调用 super 的 __init__
真的很奇怪。