【发布时间】:2023-03-03 10:38:01
【问题描述】:
def changedir(listbox):
choice = varus.get()
os.getcwd()
os.chdir("C:/Users/haris/" + choice)
directory = os.listdir("C:/Users/haris/" + choice)
listbox.delete()
directory = sorted(((os.stat(line).st_mtime, line) for line in directory if line.endswith('.zip')), reverse=1)
for unixtime, line in directory:
kws = datetime.fromtimestamp(unixtime)
listbox.insert(tk.END, line, 'Date modified:', kws.date(), "\n")
所以这是我用于我的 tkinter 项目的功能/命令,但由于某种原因,每当我点击下拉菜单时:
dropdown = tk.OptionMenu(window,
varus,
*certifiedpoop,
command=lambda:changedir(list))
我总是遇到这个错误:
"<lambda>() takes 0 positional arguments but 1 was given"
这是怎么回事???
【问题讨论】:
-
command=lambda:changedir(list))没有位置参数。 -
@juanpa.arrivillaga 它似乎实际上给出了一个位置参数,似乎选择的值作为第一个参数传递给函数,最简单的修复似乎只是做
command=lambda _: changedir(list) -
lambda:changedir(list)表示“一个未命名的函数 (lambda),它接受 0 个参数(相当于:有 0 个参数),无论如何都调用changedir(list),并返回结果”。当您与OptionMenu交互时,Tkinter 将尝试将参数传递给您分配的command函数。您的代码没有考虑到这个论点。要了解此论点的目的,您应该阅读文档。
标签: python tkinter lambda drop-down-menu operating-system