"TclError: Unknown Option"同时尝试为诺特和十字架生成 3x3 网格



我正在做一个小的零和交叉游戏来帮助我开始使用Python,但我一直得到错误:_tkinter.TclError: unknown option "-11BUTTON",我怎么能解决这个问题。

这是我给错误一些上下文的代码:

import ThreadManager
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.CreateWidgets()
def CreateWidgets(self):
ButtonList = []
for x in range(3):
for y in range(3):
self[f'{x+1}{y+1}BUTTON'] = tk.Button(self, text=f'{x+1}{y+1}_BUTTON')
self[f'{x+1}{y+1}BUTTON'].grid(row=x+1,column=y+1)
self.RestartApp = tk.Button(self, text="RESTART", fg="green",
command=self.restart)
self.RestartApp.grid(row=4,column=1)
self.QuitApp = tk.Button(self, text="QUIT", fg="red",
command=self.master.destroy)
self.QuitApp.grid(row=4,column=3)
def Restart():
print('Restarting')
# Start game stuff goes here, I haven't gotten onto this part yet as I've only just started it
Window = tk.Tk()
App = Application(master=Window)
App.mainloop()

有什么办法可以解决这个问题吗?我还没有添加任何游戏功能,ThreadManager是另一个文件,处理一些其他的东西。

东西尝试:

设置为按钮前设置为None

由于您的类继承自tk.Frame,因此它继承了框架小部件的所有行为。这种行为的部分原因是self[x]只是x属性的方便别名(例如:self['width'] = 100self.configure(width=100)是同义词)。

这个错误告诉你11BUTTON不是一个有效的属性。如果你输入self.configure('11BUTTON') = ...

你会得到同样的错误self[...]不能这样做。相反,您需要创建一个实例属性。

例如:

self.buttons = {}
for x in range(3):
for y in range(3):
self.buttons[f'{x+1}{y+1}BUTTON'] = tk.Button(self, text=f'{x+1}{y+1}_BUTTON')
...

但是,如果使用元组而不是格式化字符串,至少可以认为代码更容易理解:

self.buttons[(x,y)] = tk.Button(...)

最新更新