如何为每个循环将Array元素分配给tkinter按钮?

时间:2019-04-17 18:40:30

标签: python button tkinter

我正在构建一个基本的GUI,我希望能够将数组中的每个项目分配给一个按钮。这些按钮是通过foreach循环创建的。

我试图使按钮在单击时显示其各自的字母。

最初,我认为只需向按钮添加“ command”属性即可创建所需的关联。这仅打印所有字母的列表。我不希望它打印每个字母,而只是打印我单击的按钮的任何字母

下面是我当前的代码。

    alphabet = ["A", "B", "C", "D" , "E" , "F" , "G" , "H" , "I" , "J" , "K" , "L" , "M" , "N", "O" , "P" , "Q" , "R" , "S" , "T" , "U" , "V" , "W" , "X" , "Y" , "Z", " ", " "]
    count = 0

    for r in range(7):
        for c in range(4):
            tk.Button(self.searchFrame, text=alphabet[count], height='4', width='8', bg='white', fg='deep sky blue',
            font=("Helvetica", 18),command=self.listitems(alphabet[count])).grid(row=r,column=c)
            count += 1

def listitems(self, letter):
    print(letter)

我希望每个按钮在单击时都显示各自的字母。

这就是GUI的样子

1 个答案:

答案 0 :(得分:0)

  

问题:是否为每个循环将Array元素分配给tkinter按钮?

如果您想通过点击 click 获得Button['text'],请使用.bind(<Button-1>...代替command=

import tkinter as tk

class App(tk.Tk):
    def __init__(self):
        super().__init__()

        for r in range(1, 8):
            for c in range(1, 5):
                btn = tk.Button(self, text=chr((r*4)+c+60),
                                height='1', width='1',
                                bg='white', fg='deep sky blue', font=("Helvetica", 18))
                btn.grid(row=r,column=c)
                btn.bind('<Button-1>', self.listitems)

    def listitems(self, event):
        print(event.widget['text'])

if __name__ == "__main__":
    App().mainloop()

使用Python测试:3.5