向按钮添加信息

时间:2017-05-09 08:12:56

标签: python tkinter

我想在下面的这些按钮上添加信息,所以当按下信息出现时......我一直在尝试使用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()

1 个答案:

答案 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}}。