如何解决“TclError:未知选项”,同时尝试为 Noughts 和 Crosses 生成 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'] = 100
和 self.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(...)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。