Оказывается, был способ сделать это , скрытый в документации ! Фактически, вы должны найти его вплоть до GTK 2.0 , но константа выбора могла иметь другое имя (SELECTION_MULTI
).
Виджет выглядит так:
![A user interface with a list showing multiple elements selected](https://i.stack.imgur.com/glDmo.png)
Цветовая схема унаследована от моей темы GNOME, так что не обращайте внимания на стиль окна. Этот виджет работает с клавишами Ctrl
и Shift
. Он не имеет автоматического множественного выбора, просто нажимая на разные элементы.
Вот (Python 2) MWE, который я сделал для этого:
import gtk
class UI(gtk.Window):
def __init__(self):
gtk.Window.__init__(self)
self.set_position(gtk.WIN_POS_CENTER)
self.set_default_size(250, 150)
store = gtk.ListStore(str)
for i in range(7):
# The list notation here is odd, but required.
store.append(["Item %d" % i])
tree_view = gtk.TreeView()
tree_view.set_model(store)
# The view can support a whole tree, but we want just a list.
renderer = gtk.CellRendererText()
column = gtk.TreeViewColumn("Multiple Selection", renderer, text=0)
tree_view.append_column(column)
# This is the part that enables multiple selection.
tree_view.get_selection().set_mode(gtk.SELECTION_MULTIPLE)
scrolled_tree = gtk.ScrolledWindow()
scrolled_tree.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_ALWAYS)
scrolled_tree.add_with_viewport(tree_view)
self.add(scrolled_tree)
def main():
win = UI()
win.connect("destroy", gtk.main_quit)
win.show_all()
gtk.main()
if __name__ == "__main__":
main()