我正在努力寻找一种方法,可以根据所单击的按钮在每个按钮下方添加一个彩色框。使用tkinter和python3,我想使用类在按钮1下添加一个红色框(如果单击),或者在按钮2下添加绿色框(如果单击)。我还希望它位于每个按钮所在的相应框架内。在这里我有哪些选择?感谢任何支持:)
import tkinter as tk
class MyDialog:
def __init__(self, parent):
top = self.top = tk.Toplevel(parent)
self.myLabel = tk.Label(top, text='Enter Name')
self.myLabel.pack()
self.myEntryBox = tk.Entry(top)
self.myEntryBox.pack()
self.mySubmitButton = tk.Button(top, text='Press', command=self.send)
self.mySubmitButton.pack()
def send(self):
global username
username = self.myEntryBox.get()
self.top.destroy()
def onClick():
inputDialog = MyDialog(root)
root.wait_window(inputDialog.top)
print('Username: ', username)
class MainWindow:
def __init__(self, master):
mainLabel = tk.Label(root, text='Main Window')
mainLabel.pack()
button1_frame = tk.Frame()
button1_frame.pack()
mainButton = tk.Button(root, text='Button 1', command=onClick, width=20)
mainButton.pack(side=tk.LEFT)
button_frame2 = tk.Frame()
button_frame2.pack()
mainButton2 = tk.Button(root, text='Button 2', command=onClick, width=20)
mainButton2.pack(side=tk.LEFT)
root = tk.Tk()
app = MainWindow(root)
root.mainloop()
答案 0 :(得分:0)
关于您的问题有很多不清楚的地方,但希望我理解您想要的是什么:
您应将事件绑定到按钮,并使用config方法更改背景色。
您已经正确初始化了框架,但是您没有为框架设置父级,也没有将框架用作按钮的父级。
因此,您可能需要修改代码,使其更像:
class MainWindow:
def __init__(self, master):
mainLabel = tk.Label(root, text='Main Window')
mainLabel.pack()
button1_frame = tk.Frame(root)
button1_frame.pack()
mainButton = tk.Button(button1_frame, text='Button 1', command=onClick, width=20)
mainButton.bind('<Button-1>', lambda event: mainButton.config(bg='red'))
mainButton.pack(side=tk.LEFT)
button_frame2 = tk.Frame(root)
button_frame2.pack()
mainButton2 = tk.Button(button_frame2, text='Button 2', command=onClick, width=20)
mainButton2.bind('<Button-1>', lambda event: mainButton2.config(bg='green'))
mainButton2.pack(side=tk.LEFT)