python - 为什么在我给出位置参数时 lambda 返回 "() takes

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" 

这是怎么回事???

最佳答案

OptionMenucommand 选项的回调需要一个参数,即所选值,因此您需要为lambda 提供一个参数。

您还可以将此参数传递给 changedir(),这样您就不需要在其中调用 varus.get():

def changedir(listbox, choice):
    os.getcwd()
    os.chdir("C:/Users/haris/" + choice)
    directory = os.listdir("C:/Users/haris/" + choice)
    #listbox.delete()
    listbox.delete(0, 'end')
    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")

...

dropdown = tk.OptionMenu(window,
                         varus,
                         *certifiedpoop,
                         command=lambda v:changedir(list, v))

关于python - 为什么在我给出位置参数时 lambda 返回 "<lambda>() takes 0 positional arguments but 1 was given"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70527305/

相关文章:

r - 从向量中提取字符元素

haskell - 如何为自定义数据类型定义 (+) 函数?

c++ - 即使在手动设置显示环境变量后,WSL Ubuntu 仍显示 "Error: Unable

r - 是否可以将变量从全局环境移动到单独的环境中?

c# - Entity Framework 排序列表

c++ - 使用 C++ 生成真正的随机数 (Windows 10 x64)

javascript - 一键执行两个功能

python - 如何解析 (1045, "Access denied for user ' Use

android - Appium 创建 session 失败

node.js - 带有 Webpack 的 Electron 原生 NodeJS 模块