Tkinter Click事件突出显示单击的标签?

2024-10-03 02:32:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在tkinter中编写一个程序,其中有一个标签表,当您单击标签时,该行将高亮显示

我的代码目前看起来像这样,用于定义单击事件和标签(dbf是它们所在的框架):

def callback(event):
    event.widget.bg('blue')

for i in range(0,len(table_values)):
    num_lab1 = tk.Label(dbf, text=table_values[i][0], width=10, justify='left', bg='white')
    num_lab1.bind("<Button-1>", callback)
    num_lab1.grid(row=i+1, column=0)

    name_lab1 = tk.Label(dbf, text=table_values[i][1], width=20, justify='left', bg='white')
    name_lab1.bind("<Button-1>", callback)
    name_lab1.grid(row=i+1, column=1)

    comm_lab1 = tk.Label(dbf, text=table_values[i][2], width=50, justify='left', bg='white', wraplength=250)
    comm_lab1.bind("<Button-1>", callback)
    comm_lab1.grid(row=i+1, column=2)

但是,当我单击标签时,它会告诉我“标签没有“bg”属性”。为什么bg在这里不起作用,但在定义标签时起作用

是否有任何方法可以完成我要做的事情,并单击该行以突出显示

(我现在知道,如果它起作用的话,它只会突出显示当前标签。我想知道在我想出这个方法后如何突出显示该行,但在这里被难住了。)

任何帮助都将不胜感激!谢谢

编辑:更正。在代码中绑定行(感谢acw)

Edit2:想出了如何让整行改变颜色的方法。将每行放置在一个框架中,然后调用该框架和该框架的所有子项。这样回调事件看起来像这样:

def callback(event):
    # Makes all rows white
    for j in row_dict:
        for k in row_dict[j].winfo_children():
            k.configure(bg='white')
    # Makes clicked row highlighted
    for l in event.widget.master.winfo_children():
        l.configure(bg='#a1c1ff')

其中row_dict是所有帧(或行)的字典。还有塔达!突出显示表中单击的行


Tags: in框架eventforcallbacktable标签num