代码给出 missing 1 required positional argument 错误

Code gives missing 1 required positional argument error

此代码给出错误:

TypeError: otsi() missing 1 required positional argument: 'x'

该代码应该通过其名称的一部分打开 .pdf 文件,我将其输入到 Tellimus_entry。

Tellimus_entry = Entry(ws)
Tellimus_entry.grid(row=4,column=3,padx=(10, 10), sticky=(N, S, E, W), columnspan=3)


def otsi(x):
    return glob.glob(f'C:/Users/ASUS/Desktop/Proov/*{x}*.pdf')

    otsitav = Tellimus_entry.get()
    files = otsi(otsitav)
    print(files)
    if files:
        os.startfile(files[0])
nupp = ttk.Button(ws, text="Ava tellimuse PDF", command=otsi)
nupp.grid(row=3,column=3, sticky=(N, S, E, W), pady=5, padx=5)

您可以将命令参数作为 lambda 传递,这样您需要的 x 参数就不会丢失

Tellimus_entry = Entry(ws)
Tellimus_entry.grid(row=4,column=3,padx=(10, 10), sticky=(N, S, E, W), columnspan=3)


def otsi(x):
    return glob.glob(f'C:/Users/ASUS/Desktop/Proov/*{x}*.pdf')

    otsitav = Tellimus_entry.get()
    files = otsi(otsitav)
    print(files)
    if files:
        os.startfile(files[0])
nupp = ttk.Button(ws, text="Ava tellimuse PDF", command=lambda: otsi(whatever_param_you_need))
nupp.grid(row=3,column=3, sticky=(N, S, E, W), pady=5, padx=5)

根据你在问题中的描述,其实 otsi() 的参数 x 是没有必要的:

def otsi():
    otsitav = Tellimus_entry.get()
    files = glob.glob(f'C:/Users/ASUS/Desktop/Proov/*{otsitav}*.pdf')
    print(files)
    if files:
        os.startfile(files[0])