问题是:
return self.func(*args)
TypeError: b1_pg() missing 1 required positional argument: 'e1'
我搜索了整个谷歌,但我没有找到任何东西
from tkinter import *
from tkinter import ttk
from functools import partial
root = Tk()
root.geometry('400x200+100+200')
def b1_pg(e1):
search = str(e1.get())
print(search)
return search
what = ttk.Label(root, text="who do you want to search about???").grid(row=1, column=0)
e1 = ttk.Entry(root, width=40).grid(row=1, column=1)
b1 = ttk.Button(root, text="if you are ready prees here", command=b1_pg).grid(row=2, column=0)
#information=ttk.Label(root,text=family{search})
root.title('family')
root.mainloop()
我希望代码在我预处理按钮时从 E1(条目(中获取值,但它给了我一个错误
return self.func(*args)
TypeError: b1_pg() missing 1 required positional argument: 'e1'
我的代码出了什么问题?
这里有一些我们需要纠正的事情。
您使用的一个问题grid()
与您定义"输入"字段的同一行。 因此,由于以这种方式分配grid()
,e1
实际上将始终返回None
。
要解决此问题,您可以在新行上执行e1.grid()
,这将允许您毫无问题地使用e1.get()
。
也就是说,让我们更正您的导入,因为*
从某种意义上说,您最终会覆盖方法。
因此,与其这样做:
从 tkinter 进口 *
这样做:
import tkinter as tk
我们还应该更改您的函数中的一些内容。
return
部分在这里不会做任何有用的事情。不能将值返回到调用函数的按钮。它不能以任何方式使用,因此您可以删除该行。如果您需要在某处使用该值,则可以将其从函数发送到需要它的任何位置。
与你的问题中的错误有关。不需要在函数中e1
参数。您没有首先将参数传递给函数,因此这将导致错误。其次,您已经从全局命名空间调用了 e1.get((,因此不需要参数。
最后,您无需执行str(e1.get())
。get()
方法已返回一个字符串。它将始终返回一个字符串。
请参阅下面的代码,如果您有任何问题,请告诉我:
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
root.title('family')
root.geometry('400x200+100+200')
def b1_pg():
search = e1.get()
print(search)
ttk.Label(root, text="who do you want to search about???").grid(row=1, column=0)
e1 = ttk.Entry(root, width=40)
e1.grid(row=1, column=1)
ttk.Button(root, text="if you are ready press here", command=b1_pg).grid(row=2, column=0)
root.mainloop()