2012-02-28 3 views
1

나는 여러 항목을 선택할 수 있기를 원하는 파이썬에서 콤보 박스 위젯을 가지고 있지만 이것이 가능하지 않다고 생각하기 시작했습니다. 모드를 복수로 설정하여 Gtk.TreeView()을 사용할 수 있음을 알았습니다. 이 작업을 수행하는 콤보 박스를 얻을 수있는 방법이 있습니까? 그렇지 않다면, treeview는 콤보 박스 안에 넣을 수 있습니까? 그렇다면 어떻게 (짧은 코딩 예제) 제발요? GTK3을 사용하고 있지만 GTK2 예제에서 변환 할 수 있습니다.GTK 콤보 상자에서 파이썬으로 여러 아이템을 선택하는 방법

답변

1

많은 연구 끝에 콤보 박스의 제한 사항 일 뿐이라고 생각합니다. 그래서, 대답은 :

예, 콤보 따라서,

(그것의 트 리뷰가있는 경우) 및

는 예, 트 리뷰가 내부에 배치 할 수 있습니다, 여러 선택하도록 설정할 수 있습니다 ComboBox.

그러나 ComboBox를 활성화 할 때뿐만 아니라 ComboBox가 TreeView가 항상 표시되는 컨테이너 역할을하므로 제대로 작동하지 않습니다. Gtk.TreeSelection (Gtk.Treeview.get_selection()에서 가져옴)을 여러 개 사용하도록 선택할 수 있습니다.

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 

from gi.repository import Gtk 

PEOPLE = [ 
      "Frank", 
      "Martha", 
      "Jim Bob", 
      "Francis" 
      ] 

class TreeCombo(object): 
    def __init__(self): 
     self.win = Gtk.Window(title="Combo with liststore") 
     self.win.connect('delete-event', Gtk.main_quit) 

     self.store = Gtk.ListStore(str) 
     for person in PEOPLE: 
      self.store.append([person]) 

     # self.combo = Gtk.ComboBox.new_with_model(self.store) 
     self.combo = Gtk.ComboBox() 

     self.tree = Gtk.TreeView(self.store) 
     self.selector = self.tree.get_selection() 
     self.selector.set_mode(Gtk.SelectionMode.MULTIPLE) 

     self.combo_cell_text = Gtk.CellRendererText() 

     self.column_text = Gtk.TreeViewColumn("Text", self.combo_cell_text, text=0) 

     self.tree.append_column(self.column_text) 

     self.combo.add(self.tree) 

     self.win.add(self.combo) 

     self.win.show_all() 




def main(): 
    prog = TreeCombo() 
    Gtk.main() 

if __name__ == "__main__": 
    main() 

내가 숨어 주위에 혼란에 가서 콤보 상자의 활성화와 트 리뷰를 보여주는 해요 : 여기

는 코드입니다. 어떻게 진행되는지 알려 드리겠습니다.

+0

Gtk.TreeView 위젯을 숨기고 주변을 둘러 보는 것은 바람직하지 않은 모양이있는 콤보 박스 높이를 벗어납니다. 나는 그것을 추천하지 않는다. 단추를 사용하고 사용자 지정 Gtk.Dialog를 열려고합니다. 내가 기대했던 것만 큼 미학적이지는 않지만 내가 할 수있는 최선의 생각. – narnie