让计算机按下按钮

时间:2018-09-24 19:55:00

标签: python function indexing tkinter

我正在使用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)

1 个答案:

答案 0 :(得分:0)

尝试使用:

computer_move.invoke()

与单击按钮的效果相同(在您的情况下应该可以使用)。它调用该函数。您可以在移动后调用它,它将为您调用computer_move。编码愉快!