我正在构建一个基本的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的样子
答案 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