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"
到底是怎么回事???
uj5u.com熱心網友回復:
commandoption的回呼OptionMenu需要一個引數,即選定的值,因此您需要為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))
uj5u.com熱心網友回復:
您看到的錯誤暗示您command在構建OptionMenu小部件時作為引數傳遞的 lambda需要一個引數,即所選專案。如果愿意,您可以選擇忽略它,但它仍然需要接受該引數。
例如:
dropdown = tk.OptionMenu(window,
varus,
*certifiedpoop,
command=lambda selected: changedir(list))
uj5u.com熱心網友回復:
tk.OptionMenu將新值作為引數傳遞給由 指定的函式command。
您可以忽略它,但必須將其包含在 lambda 定義中: lambda x: changedir(list))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/398954.html
