2016-10-05 4 views
2

는 Tkinter에서이 manual처럼 [실현 : 실제로 here.]ttk.Widget.state() TclError : 잘못된 상태 이름 난 (주회 돌이의 beggining에) 상태 ttk.button 변화를 시도

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

질문의 링크가 작동하지 않습니다. –

+0

새로 고침했습니다. – Mesco

답변

2
colored_btn.state(('pressed',)) 

Python Documentation에서 :

오류

이 문제는 8.6 vs 8.5 tkinter 버전 차이에서 발생한다고 생각합니다.

문제의 링크 된 매뉴얼 (tkinter 8.5)에 stateSpac 인수가 있고 tkinter 8.6 - statespec에 주목하십시오. 이러한 것들은 항상 버전이 변경 될 수 있음을 경고해야합니다.

+0

내 생각에 "보통"수동 참조 – Mesco

+0

에 대한 어리석은 성명 Actulaly 어떤 iterable 할 것입니다. – Goyo