【发布时间】:2019-09-08 02:02:30
【问题描述】:
我正在构建一个基本的 GUI,我希望能够将数组中的每个项目分配给一个按钮。这些按钮是通过 foreach 循环创建的。
我试图让按钮在点击时显示其各自的字母。
最初,我认为只需向按钮添加“命令”属性即可创建所需的关联。这只会打印所有字母的列表。我不希望它打印每个字母,而只是打印我单击的按钮的任何字母
以下是我当前的代码。
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 的样子
【问题讨论】:
-
使用
lambda: self.listitems(alphabet[count]),因为你不能将这样的参数传递给函数。 -
按钮对象的命令选项是可调用的(所以 Saad 的建议是正确的)。您在这里所拥有的会将命令设置为 listitems 的返回值,我猜它是 None。您将获得所有字母的列表,因为在创建每个按钮时都会调用命令 listitems。