tkinter'invaild命令错误' - 如何使用方法更改文本框或标签的设置?

时间:2016-06-13 16:11:21

标签: python python-3.x user-interface tkinter

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的位置可能有效,但每次改变都会立即发生。

无论如何我可以用方法更改小部件设置吗?

0 个答案:

没有答案