单击工具按钮时,如何在相邻窗格中加载窗口小部件?

时间:2012-11-18 06:28:09

标签: gtk pygtk glade gtk3

我正在尝试创建一个用于配置设置的GTK python应用程序,我一直在寻找使用Glade为应用程序创建GTK设计。

到目前为止,我已经创建了一个包含5个笔记本的设计,看起来有点像这样:

glade-notebooks

但是,我实际上想要使用带有主要工具栏按钮的Gtktoolbar,当单击Gtktoolbar按钮时,它会打开相邻窗格中的设置。当前的Gtkprimarytoolbar实现如下所示:

glade-toolbars

我是Gtk设计的新手,我尝试设置on_tool_unitysettings_clicked信号来处理nb_unitysettings。我承认我不知道自己在做什么。

这个想法是当我点击工具栏按钮时,相关的笔记本被加载到工具栏按钮下方的窗格中。我到底该怎么做?我对Glade解决方案非常满意。

1 个答案:

答案 0 :(得分:0)

当我按下每个工具栏按钮时,我最终合并了上面的两个窗口并更改了笔记本的页面。我还隐藏了笔记本的标签,看起来根本就没有笔记本了。

这是按下按钮时处理信号的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