2017-12-06 2 views
1

저는 Windows 7의 Python 2.7에서 Tkinter로 작업 중이며 트리 스타일의 체크 박스 목록이있는 팝업 상자를 만들 필요가 있음을 알았습니다. 나는 Tkinter 또는 ttk에서 이것을 발견 할 수 없었다. 나는 Checklist 위젯의 Tix에서 찾았다. Tix를 사용하여 작동하는 독립 실행 형 예제를 얻었지만 내 기본 프로그램을 제어하는 ​​ttk.Frame에 Tix.CheckList를 추가하는 방법을 알 수 없습니다.Tkinter 컨테이너에 Tix 위젯 추가

확실히 내가 Tix 프레임 워크를 처음부터 사용하도록 강요받지 않았습니까?

import Tix 
import pandas as pd 
import Tkinter as tk 

class TreeCheckList(object): 
    def __init__(self, root): 
     self.root = root 

     self.cl = Tix.CheckList(self.root) 
     self.cl.pack(fill=Tix.BOTH, expand=Tix.YES) 
     self.cl.hlist.config(bg='white', bd=0, selectmode='none', selectbackground='white', selectforeground='black', drawbranch=True, pady=5) 

     self.cl.hlist.add('ALL', text='All Messages') 

     self.cl.hlist.add('ALL.First', text='First') 
     self.cl.setstatus('ALL.First', "off") 

     self.cl.hlist.add('ALL.Second', text='Second') 
     self.cl.setstatus('ALL.Second', "off") 

     self.cl.autosetmode() 

def main(): 
    root = Tix.Tk() 
    top = Tix.Toplevel(root) 

    checklist = TreeCheckList(top) 
    root.update() 
    top.tkraise() 
    root.mainloop() 

if __name__ == '__main__': 
    main() 

위의 코드는 모든 Tix 위젯을 사용하는 독립 실행 형 프로그램에서 작동합니다.

root = Tix.Tk() 
top = Tix.Toplevel(root) 

root = tk.Tk() 
top = tk.Toplevel(root) 

나는를 기대했다

에 : 내 큰 프로그램으로이를 구현하려고 할 때 그러나, 나는이
독립이를 시뮬레이션하기 위해, 내가 선을 변경 TclError: invalid command name "tixCheckList"받을 Tix.Tople() 루트에 배치하는 것만으로 Tix.Topuration을 구현할 수 있지만 같은 문제가 있습니다.

Tix 위젯을 사용할 때만 Tix 프레임을 사용할 수 있습니까? 아니면 오해입니까? 누구든지 좋은 Tix 문서를 가지고 있다면, 나는 무엇이든 얻을 수있는 무엇이든 사랑할 것입니다. 좋은 문서가 거의 보이지 않는 것 같습니다. 또는 ttk에 포함 된 동일한 기능이며 방금 간과 했습니까? 그것은 남겨둔 유일한 것 중 하나 인 것 같습니다.

답변

1

방금 ​​알았 듯이 root은 Tix 클래스 여야합니다. Tk와 ttk 클래스는 Tix 루트에 잘 추가 된 것처럼 보입니다. (대부분 Tkinter 클래스를 확장하기 때문에) 이것은 "수정"으로 보입니다. 그래서 내 문제는 내가 캡슐화 목적으로하고자하지 않은 내 프로그램의 한 부분으로 TIX를 끌어해야 않았기

root = tk.Tk()

root = Tix.Tk()

이을 변경하여 해결되었을 수 있습니다 ,하지만 나는 다른 방법이 없다고 생각합니다.