Gtk Окно с двумя боковыми панелями

Я пытаюсь реализовать окно с двумя боковыми панелями с возможностью изменения размера и областью между ними в GTK3. Примерами того, чего я пытаюсь достичь, являются RawTherapee и Glade.

Размещение двух GtkPaned в GtkWindow не работает.

Любой указатель/совет о том, как добиться такого макета, приветствуется! Неважно, написан ли код на C, C++ или Python, главное, чтобы я мог видеть концепцию.


person Borealis    schedule 04.04.2019    source источник
comment
Не могли бы вы уточнить, почему два GtkPaned не работают? Вы вложили их один в другой? Как вы ожидаете, что изменение размера будет работать? Предназначено ли движение одного ползунка для перемещения другого?   -  person Paul Childs    schedule 05.04.2019
comment
Я разместил их рядом друг с другом вместо того, чтобы вкладывать их друг в друга. Ошибка новичка в GTK... Теперь все работает! Спасибо!   -  person Borealis    schedule 05.04.2019
comment
Добро пожаловать. Образование — это не ошибка.   -  person Paul Childs    schedule 05.04.2019


Ответы (2)


Вот минимальный пример того, как я это решил.

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk


window = Gtk.Window(title="Two side panels")
box = Gtk.VBox()
paned1 = Gtk.Paned()
paned2 = Gtk.Paned()
button1 = Gtk.Button(label="Button1")
button2 = Gtk.Button(label="Button2")
button3 = Gtk.Button(label="Button3")
paned1.add1(button1)
paned1.add2(paned2)
paned2.add1(button2)
paned2.add2(button3)
box.pack_start(paned1, True, True, 0)
box.pack_start(paned2, True, True, 0)

window.add(box)
window.show_all()
window.connect("destroy", Gtk.main_quit)
Gtk.main()
person Borealis    schedule 05.04.2019

Вы упомянули Глэйд. Глядя на исходный код (https://github.com/GNOME/glade/blob/master/src/glade.glade) может показаться, что они используют два вложенных GtkPaned

person Paul Childs    schedule 05.04.2019
comment
На самом деле я просматривал исходный код Glade, а также RawTherapee. Структура не была легко узнаваема. Я узнал о GTK-Inspector, который позволяет исследовать иерархию объектов приложения. Для начала: GTK_DEBUG=интерактивное ваше-приложение. Он показал вложенные GtkPaneds. - person Borealis; 05.04.2019
comment
Поляна программирует себя на поляне. Он использует xml. Вы можете видеть вложение более четко, но не слишком полезно для тех, у кого не было причин вникать в него. - person Paul Childs; 05.04.2019