Размер вкладки Gtk Notebook - PullRequest
       9

Размер вкладки Gtk Notebook

2 голосов
/ 02 февраля 2011

Я использую 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 ]

3 голосов
/ 02 февраля 2011

Если вы просто хотите уменьшить размер кнопок закрытия, посмотрите, например, как Epiphany удаляет большую часть отступов вокруг кнопки.

Результат:

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

(Это немного более старая версия их кода; Ephy trunk использует CSS-стиль GTK + 3.0, но та же идея.)

1 голос
/ 02 февраля 2011

Полагаю, вы могли бы

  1. предоставить собственный виджет для ярлыков вкладок вашего ноутбука через set_tab_label
  2. use set_size_request установить размер виджета метки

Посмотрите, подойдет ли вам приведенный ниже пример:

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)

надеюсь, это поможет, с уважением

...