Gtk Notebook标签大小

时间:2011-02-02 00:43:56

标签: python user-interface gtk pygtk

我正在使用gtkNotebook在我的应用程序底部显示许多小部件。问题是,当标签显示时,它们会占用大量空间并且看起来很尴尬。我发现它是gtk.ICON_SIZE_MENU大于文本的原因,但我找不到任何更小的常量,我不想给它一个精确的像素大小,因为它可能搞砸了不同的屏幕分辨率有没有办法让按钮始终与其旁边标签上的文字大小一致?

以下是生成按钮的代码(它所在的hbox是选项卡显示的小部件):

    box = gtk.HBox(False,0)
    btn = gtk.Button()
    image = gtk.Image()
    image.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU)
    btn.set_image(image)
    btn.set_relief(gtk.RELIEF_NONE)
    btn.show()

    if type(label) != type(gtk.Label()):
        label = gtk.Label('Untitled')
    box.pack_start(label)
    box.pack_end(btn)

2 个答案:

答案 0 :(得分:3)

如果您只想缩小“关闭”按钮,请查看示例 - Epiphany删除按钮周围的大部分填充。

结果:

Tabs in Epiphany, from http://projects.gnome.org/epiphany/images/customizable.png

(这是他们代码的稍微旧版本; Ephy trunk使用GTK + 3.0 CSS样式,但同样的想法。)

答案 1 :(得分:1)

我猜你能做的就是

  1. 通过set_tab_label
  2. 为您的笔记本标签标签提供自定义小部件
  3. 使用set_size_request设置标签小部件的大小
  4. 查看以下示例是否适合您:

    import gtk
    import sys;
    
    class TestNotebook(gtk.Notebook):
        def __init__(self):
            gtk.Notebook.__init__(self)
    
        def add_new_tab(self, icon):
            image = gtk.Image()
            image.set_from_stock(icon, gtk.ICON_SIZE_DIALOG)
            image.show_all()        
    
            tab_image = gtk.Image()
            tab_image.set_from_stock(icon, gtk.ICON_SIZE_MENU)
    
            box = gtk.HBox()
            box.pack_start(tab_image, False, False)
            box.pack_start(gtk.Label(icon), True, True)
            # set tab size here
            box.set_size_request(50, 50)        
            box.show_all()
    
            self.set_current_page(self.append_page(image))
            self.set_tab_label(image, box)
    
    if __name__ == '__main__':
        notebook = TestNotebook()
        notebook.add_new_tab(gtk.STOCK_ABOUT)
        notebook.add_new_tab(gtk.STOCK_ADD)
        notebook.add_new_tab(gtk.STOCK_APPLY)
    
        box = gtk.VBox()
        box.pack_start(notebook)
    
        window = gtk.Window()
        window.resize(600, 400)
        window.add(box)
        window.show_all()
    
        gtk.main()
        sys.exit(0)
    

    希望这有帮助,尊重