我正在制作一个GUI Hangman,每个字母做了26个按钮。我想在按下按钮时禁用按钮,但似乎无法从函数中调用变量。
这是一个示例按钮:
self.letter_n = tk.Button(self, text="n", command=lambda: self.take_guess("n"), width=2, height=2).place(x=450, y=400, anchor="center") # Letter "n" (Button)
我尝试执行此操作,但是出于某些原因,button
返回了None
。
def take_guess(self, letter):
button = getattr(self, f"letter_{letter}")
button.configure(state="disabled")
我还试图为每个字母和变量制作一个字典,如下所示:
self.dict_of_letters = {"a": self.letter_a,
"b": self.letter_b} # And so on...
并在这样的函数中使用它,但它仍返回None
def take_guess(self, letter):
button = self.dict_of_letters[letter]
有人可以帮助我吗?这真的很烦人,我不确定该怎么做... 我很乐意提供更多信息。
答案 0 :(得分:3)
在函数链接中,链中最右函数的返回值分配给该变量。例如,在
var = foo().bar().baz()
为 var
分配了从baz()
返回的任何内容。在您的示例中,您不仅使用tk.Button()
创建了一个按钮实例,还调用了它的place()
函数。 tk.Button()
返回一个按钮对象,但是place()
仅返回None
。
解决方案是创建所有按钮实例,将它们存储在列表或字典中,然后遍历所有按钮实例以place()
。