1
from tkinter import *
player1 = []
player2 = []
class MakeSq:
def __init__(self, master):
self.master = master
self.sqs()
self.again()
def sqs(self):
self.square_frame = (self.master)
self.square_frame.grid()
self.quan = 17 # make this game universal, you can add more squares
for s in range(1, self.quan * self.quan + 1, 1):
self.b = s
self.b = Button(self.master, width=3, command=lambda x=s: self.mark(x), font=('times', 16))
self.b['command'] = lambda x=s, which=self.b: self.mark(x, which)
self.place_it(s) # place square on the right place
self.b.grid(row=self.r, column=self.c)
def place_it(self, s):
self.r = 0
while s > self.quan:
s -= self.quan
self.r += 1
self.c = s % (self.quan + 1)
def mark(self,x , which):
if len(player1) == len(player2):
player1.append(x)
else:
player2.append(x)
if len(player1) == len(player2):
p = 'O'
p_c = 'dark blue'
else:
p = 'X'
p_c = 'orange'
which.config(text=p, fg=p_c, command='')
self.check_win(player1)
self.check_win(player2)
def check_win(self, player):
for p in player: # iba p + 4 moze byt delitelne 17, kluc k vyrieseniu problemu s riadkami
if p + 1 in player and p + 2 in player and p + 3 in player and p + 4 in player:
print('win')
elif p + 17 in player and p + 34 in player and p + 51 in player and p + 68 in player:
print('win')
elif p + 18 in player and p + 36 in player and p + 54 in player and p + 72 in player:
print('win')
elif p + 16 in player and p + 32 in player and p + 48 in player and p + 64 in player:
print('win')
def again(self):
self.again_bt = Button(self.master, text='New game', command=self.restart)
self.again_bt.grid(column=200)
def restart(self):
self.sqs()
player1.clear()
player2.clear()
def show_result(self):
pass
root = Tk()
plan = MakeSq(root)
root.mainloop()
此代碼創建289個按鈕。我怎麼能指定每個按鈕?例如,如果我點擊50號按鈕,此按鈕將激活功能self.mark()
,但如何在不點擊按鈕的情況下爲特定按鈕激活功能self.mark()
。python,tkinter特定按鈕
編輯: 我編輯我的代碼,你現在可以運行它。我想創建井字棋遊戲。這個代碼應該爲兩個玩家創建遊戲。如果你點擊按鈕,按鈕的文字將會改變。功能self.mark()
的目的是改變按鈕的文本,並檢查是否有人勝利。它的工作原理,但我想加我的機器人/電腦。因此,當我做我的舉動後(點擊按鈕),機器人會做他的舉動。會有什麼功能找到最佳的舉動,並做這個動作(它應該改變特定的按鈕的文本,而不需要點擊此按鈕)。 如何在不點擊此按鈕的情況下更改特定按鈕的文本?
如何運行此代碼? –
他們每個人都會調用相同的功能嗎? –
我編輯了我的問題。 – Marty