2013-05-26 1 views
4

내부에 콤보 상자를 삽입, 다음과 같이 클래스를 사용하여 트 리뷰 위젯을 만들 수 있습니다. 나는 트리에서 콤보 상자를 넣어 원하는 위치 코드 블록의 끝에서, 당신은 콤보 객체를 사용하여 볼 수 있습니다Tkinter를이 트 리뷰 위젯 예를 들어

def _populate_root(self): 
     # a Filter object 
     for filter in self.filters: 
      top_node = self.tree.insert('', 'end', text=filter.name) 

      # a Field object 
      for field in filter.fields: 
       mid_node = self.tree.insert(top_node, 'end', text = field.name) 

       # insert field attributes 
       self.insert_children(mid_node, field) 

    def insert_children(self, parent, field): 
     name = self.tree.insert(parent, 'end', text = 'Field name:', 
         values = [field.name]) 
     self.tree.insert(parent, 'end', text = 'Velocity: ', 
         values = [Combo(self)]) # <--- Combo object 
     ... 

다음 콤보의 클래스 정의는 다음과 같다. 내가 그것을 이해하는 방법은, 콤보 상자 위젯에서 상속하고 TTK에서 Labelframe 위젯 내부에 위치해야합니다

class Combo(ttk.Frame): 
    def __init__(self, master): 
     self.opts = ('opt1', 'opt2', 'etc') 
     self.comboFrame = ttk.Labelframe(master, text = 'Choose option') 
     self.comboFrame.pack() 
     self.combo = ttk.Combobox(comboFrame, values=self.opts, state='readonly') 
     self.combo.current(1) 
     self.combo.pack() 

그래서이 완전히 잘못입니까? Treeview 위젯 내에서 단위 (예 : m/s, ft/s 등)를 변경하는 기능이 필요합니다.

제안 사항, plz?

what i want

답변

4

트 리뷰 위젯은 임베디드 위젯을 지원하지 않습니다. values 속성의 값은 문자열로 처리됩니다.

+0

고마워요! 나는 이걸 조사하는 데 더 많은 시간을 낭비하지 않을 것이다 ... – ADB

+0

BTW는 treeview에서 단위 전환의 목표를 달성 할 수 있도록 나에게 무엇인가 제안 할 수 있겠는가? 기본적으로 사용자가 프로그램에서 m/s, 매듭, mph 등을 표시할지 여부를 결정할 수 있기를 바랍니다. – ADB

+0

@ADB : http://tkintertreectrl.sourceforge.net/ 그것을 직접 사용하지는 않았지만 tcl/tk aps와 함께 tktreectrl을 사용했으며 특정 기능이 많이 있습니다. –

0

기본적으로 트 리뷰는 문자열 목록 포리스트의 정적 표시입니다. 그러나 작업을 통해 Treeview 참조를 신중하게 읽은 후 Treeview를 상당히 대화식으로 만들 수 있습니다. 이 질문에 대해서는 마우스 왼쪽 버튼을 마우스 x, y를 단위 속성 셀의 경계 상자 (.bbox)와 비교하는 이벤트 핸들러에 바인딩합니다. 상자에있는 경우, 현재 값 (예 : 'flops')으로 초기화 된 콤보 박스를 단위 속성 셀 바로 위에 표시하십시오.

Tkinter.ttk Treeview reference 물론

Tcl/tk treeview reference, 별도의 콤보와 함께 프레임에 트 리뷰를 넣어하는 것이 더 쉬울 수 있습니다.