Python中的Tkinter枚举

丹尼尔

我需要你的帮助。我想做几个标签。单击后,每个标签上的数字应更改为与该数字对应的文本。我试过了,但是它只是将每个标签上的文本更改为list2中的最后一项。我应该怎么做才能使其发生相应的变化?数字和文本在两个列表中都位于同一位置。

import tkinter as tk

root = tk.Tk()

list1 = [["one", "two", "three", "four"], ["five", "six", "seven", "eight"],["nine","ten","eleven","twelve"]]
list2 = [["1","2","3","4"], ["5", "6", "7", "8"],["9", "10", "11", "12"]]

def change_label(event):
    for row, rowinlist in enumerate(list2):
        for column, text2 in enumerate(rowinlist):    
            event.widget.configure(text=text2)

for row, rowinlist in enumerate(list1):
    for column, text in enumerate(rowinlist):
        label = tk.Label(text=text, width=15, bd=1, relief="raised")
        label.grid(row=row, column=column)
        label.bind("<1>", change_label)
        x = text

root.mainloop()
acw1668

这是因为您浏览了其中的所有项目list2event.widget为其设置了文本,所以最终结果是的最后一项list2

您需要保存rowcolumn每个标签,并利用它们来设置它的文字:

def change_label(event):
    row, col = event.widget.pos # get the position of clicked label
    event.widget.configure(text=list2[row][col])

for row, rowinlist in enumerate(list1):
    for column, text in enumerate(rowinlist):
        label = tk.Label(text=text, width=15, bd=1, relief="raised")
        label.grid(row=row, column=column)
        label.bind("<1>", change_label)
        label.pos = (row, column) # save the position of label

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章