作为项目的一部分,我在tkinter中为connect4制作了一个GUI,使人们可以玩playervsplayer,playervsAI等。作为此项目的一部分,我有一个继承的方法( choose_move )从接口返回一个值,该值代表AI或玩家选择的列。在玩家选择举动的情况下,它需要返回与玩家考虑过自己的举动之后将要单击的七个按钮之一相关联的值。这是我认为代码应具有的外观,但我不确定,因为我可能已经将自己“编码到一个角落”
def choose_move():
"""Returns a value between 0 and 6 based on player input."""
# makes buttons visible:
create_move_button_array()
# needs to somehow wait until one of the buttons is clicked
return self.chosen_move
def create_move_button_array():
self.move_buttons = []
for i in range(7):
#sizing, placement etc. of buttons ommited
self.move_buttons.append(tk.Button(command=create_choose_move_action(i)))
def create_choose_move_action(move):
return lambda: self.chosen_move=move
对于编程我还是比较陌生,所以为看似愚蠢的问题表示歉意,并在此先感谢您的答复!
我意识到该线程已被标记为另一个线程的重复,但是另一个线程似乎只是在讨论使用lambda关键字来创建函数对象以作为参数传递给按钮构造函数的问题。有人可以向我解释一下如何在解决问题时使用它来解决我要问的问题吗?
答案 0 :(得分:0)
在设计GUI时,您不必“等到单击其中一个按钮”。 它是mainloop为您完成的,您可以编写对“事件”的响应。 查看Tkinter understanding mainloop或事件驱动程序设计的任何其他文档。