from tkinter import *
class Win:
def __init__(self):
root=Tk()
root.title("Counter")
root.geometry("600x600")
root.configure(background = "green")
self.widget = App(root)
self.widget.creat_widgets()
root.mainloop()
self.widget.test_change()
class App(Frame):
def __init__(self, master):
super().__init__(master)
self.pack(padx = 10, pady = 10)
def creat_widgets(self):
self.text = Text(self, bg = 'grey', width=9, height=6)
self.text.pack()
def test_change(self):
self.text['bg'] = 'black'
Win()
我想将文本框的背景颜色从灰色更改为黑色。 但相反,我得到了这个:
Traceback (most recent call last):
File "test.py", line 27, in <module>
Win()
File "test.py", line 13, in __init__
self.widget.test_change()
File "test.py", line 25, in test_change
self.text['bg'] = 'black'
File
"C:\Users\HB\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py",
line 1337, in __setitem__
self.configure({key: value})
File
"C:\Users\HB\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py",
line 1330, in configure
return self._configure('configure', cnf, kw)
File
"C:\Users\HB\AppData\Local\Programs\Python\Python35\lib\tkinter\__init__.py", line 1321, in _configure
self.tk.call(_flatten((self._w, cmd)) + self._options(cnf))
_tkinter.TclError: invalid command name ".1652028503152.1652028502536"
我已经了解到这与mainloop()
有关,但我仍然不知道如何使用方法正确更改self.text
的设置。改变主循环的位置是不可能的,因为我想将这个代码用于纸牌游戏gui,其中颜色变化需要根据玩家互动发生在每个序列(或圆形)。改变mainloop
的位置可能有效,但每次改变都会立即发生。
无论如何我可以用方法更改小部件设置吗?