Как загрузить виджет на соседней панели при нажатии кнопки инструмента?

Я пытаюсь создать приложение GTK на Python для настройки параметров, и я искал создание дизайна GTK для приложения с использованием Glade.

Пока что я создал дизайн из 5 блокнотов, и он выглядит примерно так:

glade-notebooks

Однако я действительно хочу использовать Gtktoolbar с кнопками панели инструментов основного стиля, которые открывают настройки на соседней панели при нажатии кнопок Gtktoolbar. Текущая реализация Gtkprimarytoolbar выглядит так:

glade-toolbars

Я очень новичок в разработке Gtk, и я попытался настроить сигнал on_tool_unitysettings_clicked для обработки nb_unitysettings. Признаюсь, я не знаю, что делаю.

Идея состоит в том, что когда я нажимаю кнопку на панели инструментов, соответствующая записная книжка загружается на панель под кнопками панели инструментов. Как именно мне это сделать? Я был бы очень доволен решением Glade.


person jokerdino    schedule 18.11.2012    source источник


Ответы (1)


В итоге я объединил оба окна выше и изменил страницу записной книжки при нажатии каждой из кнопок панели инструментов. Я также спрятал вкладки ноутбука, чтобы не было похоже, что там вообще был блокнот.

Вот файл python, который обрабатывает сигналы при нажатии кнопок:

#!/usr/bin/env python3
from gi.repository import Gtk

class Handler ():
    '''Clicking the toolbars'''
    def on_tool_startpage_toggled(self,nb_mechanig):
        nb_mechanig.set_current_page(0)
    def on_tool_unitysettings_toggled(self,nb_mechanig):
        nb_mechanig.set_current_page(1)
    def on_tool_compizsettings_toggled(self,nb_mechanig):
        nb_mechanig.set_current_page(2)
    def on_tool_themesettings_toggled(self,nb_mechanig):
        nb_mechanig.set_current_page(3)
    def on_tool_desktopsettings_toggled(self,nb_mechanig):
        nb_mechanig.set_current_page(4)


# Basic builder setting up

builder = Gtk.Builder()
builder.add_from_file("mechanig.glade")
builder.connect_signals(Handler())

# The main Mechanig window that needs to be shown
mechanig_main = builder.get_object('mechanig_main')

# This signal is emitted when you close the window,
# which triggers Gtk.main_quit, which tells the main Gtk loop to quit
mechanig_main.connect("delete-event", Gtk.main_quit)

# This is required, otherwise Gtk leaves the window hidden.
# Useful, like with our dummy "windows" that get reparented
mechanig_main.show_all()

# Runs the main loop
Gtk.main()

И окно теперь выглядит так, и это самое близкое к тому, что я хотел:

Mechanig-glade-previewer

person jokerdino    schedule 18.11.2012