我正在使用tkinter作为GUI制作井字游戏,但是我的问题是,因为我有一个函数(可以移动)每次单击按钮时都会运行,所以它不会自动进行直到我单击一个按钮(无论是哪个按钮)为止,这都会塞满我的动作索引,这也意味着您必须在计算机进行移动之前单击。
无论如何,我是否可以让“计算机”本身假装单击一个按钮,从而启动该功能?
以下是制作按钮位:
def make_button(n, row, col):
button_list[n] = Button(tk,bg='gray', text = " ", fg='white',height=4,width=8,command=lambda:ttt(n, button_list))
button_list[n].grid(row=row,column=col,sticky = S+N+E+W)
这是一个make move位(它的提示,所以不要介意当前的计算机移动只会在中间或角落起作用)
def computer_move(buttons, index):
global bclick
buttons["text"] = "O"
COM.add(index)
bclick = True
buttons=StringVar()
bclick = True
corner_moves = {0,2,6,8}
def ttt(n, buttons):
global bclick
if n not in P and n not in COM and bclick == True:
button_list[n]["text"] = "X"
P.add(n)
bclick = False
elif bclick == False and 4 not in COM and 4 not in P:
computer_move(button_list[4], 4)
elif bclick == False:
corners_not_COM = (corner_moves.difference(COM))
corners_not_P_or_COM = (corners_not_COM.difference(P))
list_corners_not_P_or_COM = list(corners_not_P_or_COM)
random_corner_index = random.randint(0,len(list_corners_not_P_or_COM))
random_corner = list_corners_not_P_or_COM[random_corner_index]
computer_move(button_list[random_corner], random_corner)
答案 0 :(得分:0)
尝试使用:
computer_move.invoke()
与单击按钮的效果相同(在您的情况下应该可以使用)。它调用该函数。您可以在移动后调用它,它将为您调用computer_move。编码愉快!