我想在下面的这些按钮上添加信息,所以当按下信息出现时......我一直在尝试使用get()功能,这是正确的吗?我似乎无法让它运行,但继承了我的代码尝试:
submit = Button(frame, text="Enter", width=15, command=lambda: valueGET(E1.get(), E2.get()))
submit.grid()
和我的完整代码:
def raise_frame(frame):
frame.tkraise()
f1 = tk.Frame(root)
f2 = tk.Frame(root)
f3 = tk.Frame(root)
f4 = tk.Frame(root)
f5 = tk.Frame(root)
for frame in (f1,f2,f3,f4,f5):
frame.grid(row=0, column=0, sticky='news')
class MyButton(tk.Button):
def __init__(self, *args, info=None, command=None, **kwargs):
super().__init__(*args, **kwargs, command=self.callback)
self.initialCommand = command
self.info = info
def display_info(self):
# Display the information the way you want
print(self.info)
def callback(self):
self.initialCommand()
self.display_info()
button1 = tk.Button(f1, text='Ya', command=lambda:raise_frame(f2)).pack()
button2 = tk.Button(f1, text=Yb', command=lambda:raise_frame(f3)).pack()
button3 = tk.Button(f1, text=Yc', command=lambda:raise_frame(f4)).pack()
button4 = tk.Button(f1, text='Yd', command=lambda:raise_frame(f5)).pack()
tk.Label(f2, text="Ya").pack()
button = tk.Button(root, text="Display info", command=lambda:print("Initial command"))
button.pack()
button.info = "Hello, world!"
tk.Button(f2, text="HOME", command=lambda:raise_frame(f1)).pack()
tk.Label(f3, text="Yb").pack()
button = tk.Button(root, text="Display info", command=lambda:print("Initial command"))
button.pack()
button.info = "Hello, world!"
tk.Button(f3, text="HOME", command=lambda:raise_frame(f1)).pack()
tk.Label(f4, text="Yc").pack()
button = tk.Button(root, text="Display info", command=lambda:print("Initial command"))
button.pack()
button.info = "Hello, world!"
tk.Button(f4, text="HOME", command=lambda:raise_frame(f1)).pack()
tk.Label(f5, text="Yd").pack()
button = tk.Button(root, text="Display info", command=lambda:print("Initial command"))
button.pack()
button.info = "Hello, world!"
tk.Button(f5, text="HOME", command=lambda:raise_frame(f1)).pack()
raise_frame(f1)
root.mainloop()
if os.path.isfile(creds):
Login()
else:
Signup()
答案 0 :(得分:1)
据我了解,您希望存储与特定按钮相关的特定信息,以便在按下所述按钮时,信息会显示在某处。
您可以扩展import tkinter as tk
class MyButton(tk.Button):
def __init__(self, *args, info=None, command=None, **kwargs):
super().__init__(*args, **kwargs, command=self.callback)
self.initialCommand = command
self.info = info
def display_info(self):
# Display the information the way you want
print(self.info)
def callback(self):
self.initialCommand()
self.display_info()
类,以便使包装器能够保存该信息。
Button
这允许您通过设置“信息”属性来随时设置包装信息。
在代码的开头添加此类,并用MyButton
个实例替换所有info
个实例。
新按钮的行为与以前完全相同,只是在按下它们时,display_info
属性将按照您在display_info
方法中定义的方式显示,在调用命令后通过实例化。
您需要根据需要定义root = tk.Tk()
button = MyButton(root, text="Display info", command=lambda:print("Initial command"))
button.pack()
button.info = "Hello, world!"
root.mainloop()
(在控制台中打印,在标签中显示......)。
这是一个简短的例子:
Initial command
上面的代码显示了一个带有单个按钮的根窗口。按下此按钮后,控制台中会打印info
,然后会打印"Hello, world!"
属性,即{{1}}。