我想创建类似this图像的内容,因此每次单击单选按钮时,其上方的列都会显示为蓝色。
我需要有关如何开始在python上使用tkinter的指导
到目前为止,这是我的代码:
from Tkinter import *
the_window = Tk()
def color_change():
L1.configure(bg = "red")
v =IntVar()
R1 = Radiobutton(the_window, text="First", variable=v, value=1, command = color_change).pack()
R2 = Radiobutton(the_window, text="Second", variable=v, value=2, command = color_change).pack()
R2 = Radiobutton(the_window, text="Third", variable=v, value=3, command = color_change).pack()
L1 = Label(the_window,width = 10, height =1, relief = "groove", bg = "light grey")
L1.grid(row = 2, column = 2)
L1.pack()
L2 = Label(the_window,width = 10, height =1, relief = "groove", bg = "light grey")
L2.grid(row = 2, column = 2)
L2.pack() # going to make 10 more rectangles
the_window.mainloop()
我刚刚开始,我不知道我在做什么。
答案 0 :(得分:0)
编程不仅仅是抛出代码直到某些东西有效,你需要停下来思考如何构建数据,以便你的程序易于编写和易于阅读。
在您的情况下,您需要将一个按钮链接到一个小部件列表,这些小部件在选择该按钮时需要更改。实现此目的的一种方法是使用包含表示按钮值的键的字典,以及与该radiobutton相关联的标签列表的值。请注意,这不是唯一的解决方案,它只是一个更简单,更明显的解决方案。
例如,在创建所有小部件后,您可能会得到一个如下所示的字典:
labels = {
1: [L1, L2, L3],
2: [l4, l5, l6],
...
}
使用它,您可以获得radiobutton的值(例如:radioVar.get()
),然后使用它来获取需要更改的标签列表:
choice = radioVar.get()
for label in labels[choice]:
label.configure(...)
您可以单独创建每个小部件,也可以轻松地在循环中创建它们。如何创建它们取决于您,但重点是,您可以使用数据结构(如字典)在radiobuttons和每个单选按钮的标签之间创建映射。