Я очень новичок в разработке приложений GTK и Gnome, поэтому извиняюсь за свою наивность. (Мой язык разработки - Python). Я хотел бы использовать ListBox
для отображения некоторых данных, и отдельные представления строк будут довольно сложными (т. Е. Состоят из нескольких разных виджетов). В результате я бы предпочел не использовать TreeView
, потому что для этого потребуется куча пользовательских обработок/событий. Я заметил, что ListBox
имеет метод bind_model
, но кажется, что я не могу использовать его для привязки модели ListStore
, даже думал, что ListStore
реализует интерфейс ListModel
. Кто-нибудь знает, как это сделать?PyGi: Как использовать GTKListBox с GTKListStore?
0
A
ответ
0
Это сокращенный код из моей программы учета с открытым исходным кодом.
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GdkPixbuf, Gdk
import os, sys
class GUI :
def __init__(self):
listbox = Gtk.ListBox()
employee_name_label = Gtk.Label("Henry", xalign=1)
combo = Gtk.ComboBoxText()
combo.set_property("can-focus", True)
for name in ["bar", "foo", "python"]:
combo.append('0', name)
list_box_row = Gtk.ListBoxRow()
hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=5)
list_box_row.add(hbox)
switch = Gtk.Switch()
switch.props.valign = Gtk.Align.CENTER
project_time_label = Gtk.Label("0:00:00", xalign=1)
project_time_label.set_property('width-chars', 8)
hbox.pack_start(employee_name_label, True, False, 5)
hbox.pack_end(project_time_label, False, False, 5)
hbox.pack_end(switch, False, False, 5)
hbox.pack_end(combo, False, False, 5)
listbox.add(list_box_row)
window = Gtk.Window()
window.add(listbox)
window.connect("destroy", self.on_window_destroy)
window.show_all()
def on_window_destroy(self, window):
Gtk.main_quit()
def main():
app = GUI()
Gtk.main()
if __name__ == "__main__":
sys.exit(main())
Возможно, он не может точно ответить на ваш вопрос, но он работает, и он показывает способ использования ListBox. ListBox - очень хороший выбор для сложных настроек. В моем случае я делал так много операций каждую секунду, что он разбил Treeviews.
0
Простой exampe:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gio, GObject
import sys
class Item(GObject.GObject):
text = GObject.property(type = str)
def __init__(self):
GObject.GObject.__init__(self)
class GUI:
def __init__(self):
item1 = Item()
item1.text = "Hello"
item2 = Item()
item2.text = "World"
liststore = Gio.ListStore()
liststore.append(item1)
liststore.append(item2)
listbox=Gtk.ListBox()
listbox.bind_model(liststore, self.create_widget_func)
window = Gtk.Window()
window.add(listbox)
window.connect("destroy", self.on_window_destroy)
window.show_all()
def create_widget_func(self,item):
label=Gtk.Label(item.text)
return label
def on_window_destroy(self, window):
Gtk.main_quit()
def main():
app = GUI()
Gtk.main()
if __name__ == "__main__":
sys.exit(main())
+0
Пожалуйста, добавьте больше описания и/или информации о вашем ответе и о том, как он решает заданную проблему, чтобы другие могли легко понять это, не прося разъяснений – koceeng
Смежные вопросы
- 1. Как использовать виджеты Xfce с Pygi?
- 2. Как использовать модуль Discoverer с pygi GstPbutils?
- 3. Добавление GtkListStore (ошибка сегментации)
- 4. PyGI: Контекстное меню стилизации
- 5. Окно PyGI не разрушает
- 6. Opencv & PyGi: как отобразить изображение, прочитанное opencv
- 7. PyGI: Создать pixbuf от 0
- 8. Получить ручку окна в PyGI
- 9. Удалить родителя без GtkListBoxRow из GtkListBox
- 10. GtkListBox, как предотвратить автоматический выбор строки в окне show
- 11. Передача кода из pygst в pyGi
- 12. портирование приложения PyGST на GStreamer1.0 + PyGI
- 13. Как сделать атрибут объекта хранения GtkListStore в строке?
- 14. Программно добавление данных в GtkTreeView/GtkListStore, созданный в Glade 3.12.1
- 15. Невозможно добавить элемент в GtkListBox за пределами моего Gtk.Window
- 16. c: Событие с измененной строкой GtkListStore - как я могу получить данные выбранной строки?
- 17. Удерживания добавления строки в gtkliststore в то время как цикл работает в отдельном процессе
- 18. Где TreeModel в GTK3 (PyGI) получает свой первый iter для вызова do_iter_next (iter)?
- 19. Строка списка строк с CSS в GTK + 3
- 20. Как использовать с оберткамиDefault?
- 21. Как использовать этикетки с #
- 22. как использовать с app.config
- 23. Как использовать оператор с%?
- 24. Запись приложения чата Exchange в GTK + 3, что я должен использовать для отображения сообщений?
- 25. Как использовать libproxy с proxy.pac?
- 26. Как использовать gdb с LD_PRELOAD
- 27. Как использовать ActionLink с RouteValueDictionary?
- 28. Как использовать StepObjects с Cests?
- 29. Как использовать .contains с массивом?
- 30. Как использовать перенаправление с ZfcUser?
Параметр 'Gtk.ListStore' для' Gtk.TreeView's. Вам нужно использовать 'Gio.ListStore' для' Gtk.ListBox.bind_model() '. – elya5