tkinter链接单选按钮到多个标签并更改颜色

时间:2016-05-08 12:10:02

标签: python tkinter radio-button

我想创建类似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()

我刚刚开始,我不知道我在做什么。

1 个答案:

答案 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和每个单选按钮的标签之间创建映射。