我的游戏设计是这样的 我需要发展战略井字游戏(在井字游戏的每个区块,我们会发现井字游戏)…所以在这里,我创造了9帧,每帧有9个按钮。。。 但是当我在任何帧中单击按钮时,更改只出现在一个帧中,即在(0,2)中,我知道,因为这是要调用的最后一帧..因此我需要帮助来纠正问题…我尝试过,但没有得到它,提前感谢 这是我的密码
from Tkinter import *
root = Tk()
root.title("Simple Design")
root.geometry("300x300")
class Design:
count = 0
def __init__(self):
self.duplicates = {}
self.block = {}
self.button = {}
for i in range(3):
for j in range(3):
self.duplicates[i, j] = "."
self.frame()
def frame(self):
for i, j in self.duplicates:
self.block[i, j] = Frame(root, background="blue")
self.block[i, j].grid(row=i, column=j, ipadx=5, ipady=2)
self.button_create(self.block[i, j])
def button_create(self, frame):
for i, j in self.duplicates:
handler = lambda a=i, b=j: self.update(a, b)
self.button[i, j] = Button(frame, command=handler, text=".", height=3, width=5)
self.button[i, j].grid(row=i, column=j)
def update(self, i, j):
if (Design.count % 2 == 0):
self.button[i, j]["text"] = "X"
Design.count += 1
else:
self.button[i, j]["text"] = "O"
Design.count += 1
self.button[i, j]["state"] = "disabled"
print (i, j)
d = Design() # out of class
root.mainloop()
您的按钮处理程序有一个问题:每个按钮如何知道其坐标?你知道吗
只需替换:
签署人:
frame
方法中还有一个bug: 您迭代duplicates
,然后调用button_create
,后者再次迭代duplicates
。所以按钮在内部循环中被重新定义。你知道吗您可以这样更改
button_create
:然后调整
frame
中的调用,如下所示:还要注意,您应该继承
object
类以使用新样式的类:代替
if ... else
,您可以使用映射来计算update
中的符号“X”或“O”:或者简单地说:
相关问题 更多 >
编程相关推荐