【问题标题】:How to choose multiple items in a GTK combobox in python如何在python的GTK组合框中选择多个项目
【发布时间】:2012-03-18 05:01:19
【问题描述】:

我在 python 中有一个组合框小部件,我希望能够选择多个项目,但我开始认为这是不可能的。我看到可以通过将模式设置为多个来使用Gtk.TreeView()。有没有办法让组合框做到这一点?如果不是,可以将树视图放置在组合框内吗?如果可以,如何(请提供简短的编码示例)?我正在使用 GTK3,但我可能可以从 GTK2 示例中翻译它。

【问题讨论】:

    标签: python combobox gtk gtktreeview cellrenderer


    【解决方案1】:

    经过大量研究,我认为这只是组合框的一个限制,它只能容纳一个项目。所以,答案是:

    是的,可以设置一个组合框选择多个(如果里面有 TreeView)

    因此,

    是的,TreeView 可以放在 ComboBox 内。

    但是,它的行为不正确,因为 ComboBox 充当了始终可见 TreeView 的容器,而不仅仅是在激活 ComboBox 时。它可以设置为使用 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。不像我希望的那样美观,但我能想到的最好的。
    猜你喜欢
    • 2014-11-28
    • 2019-03-29
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    相关资源
    最近更新 更多