나는 여러 항목을 선택할 수 있기를 원하는 파이썬에서 콤보 박스 위젯을 가지고 있지만 이것이 가능하지 않다고 생각하기 시작했습니다. 모드를 복수로 설정하여 Gtk.TreeView()
을 사용할 수 있음을 알았습니다. 이 작업을 수행하는 콤보 박스를 얻을 수있는 방법이 있습니까? 그렇지 않다면, treeview는 콤보 박스 안에 넣을 수 있습니까? 그렇다면 어떻게 (짧은 코딩 예제) 제발요? GTK3을 사용하고 있지만 GTK2 예제에서 변환 할 수 있습니다.GTK 콤보 상자에서 파이썬으로 여러 아이템을 선택하는 방법
1
A
답변
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()
내가 숨어 주위에 혼란에 가서 콤보 상자의 활성화와 트 리뷰를 보여주는 해요 : 여기
는 코드입니다. 어떻게 진행되는지 알려 드리겠습니다.
Gtk.TreeView 위젯을 숨기고 주변을 둘러 보는 것은 바람직하지 않은 모양이있는 콤보 박스 높이를 벗어납니다. 나는 그것을 추천하지 않는다. 단추를 사용하고 사용자 지정 Gtk.Dialog를 열려고합니다. 내가 기대했던 것만 큼 미학적이지는 않지만 내가 할 수있는 최선의 생각. – narnie