我尝试在tkinter中改变ttk.button状态(在主循环的开始处),如manual [实现:实际here。]
import tkinter
from tkinter import ttk
root = tkinter.Tk()
style = ttk.Style()
style.map("C.TButton",
foreground=[('pressed', 'red'), ('active', 'blue')],
background=[('pressed', '!disabled', 'black'), ('active', 'white')]
)
colored_btn = ttk.Button(text="Test", style="C.TButton")
colored_btn.pack()
colored_btn.state('pressed')
root.mainloop()
导致错误:
in state return self.tk.splitlist(str(self.tk.call(self._w, "state", statespec))) _tkinter.TclError: Invalid state name p
答案 0 :(得分:2)
colored_btn.state(('pressed',))
statespec通常是列表或元组。
我认为这个问题来自8.6 vs 8.5 tkinter版本差异。
请注意,在有问题的手动链接(tkinter 8.5)中,有stateSpac
个参数,在tkinter 8.6中有{ - 1}}。这样的事情应该总是警告你版本可能会有变化。