2011-02-02 11 views
2

gtkNotebookを使用して、アプリケーションの下部に多数のウィジェットを表示しています。問題は、タブが表示されているときに、多くのスペースをとり、一般的に見苦しいものに見えるということです。私はそれがgtk.ICON_SIZE_MENUがテキストより大きい原因であることを理解しましたが、私は小さい定数を見つけることができませんし、別の画面解像度で混乱するかもしれないので、正確なピクセルサイズを与えたくありません。ボタンの横にあるラベルのテキストのサイズに合わせてボタンを常に偽にする方法はありますか?ここでGtk Notebookタブサイズ

は、ボタンを生成するコードは、(それが中だ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) 

答えて

3

について、どのように - 例えば、エピファニーの削除しを見てボタンの周りのほとんどのパディング。

結果:

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

(これは、コードの少し古いバージョンです。EphyトランクはGTK + 3.0 CSSスタイルを使用していますが、同じ考え方)

1

私はあなたが何ができるかと思います

  1. は、カスタムウィジェットを提供していますラベルウィジェットのサイズを設定するにはset_tab_label
  2. 使用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) 

希望を、これは、役立ちますあなただけの閉じるボタンを小さくしたい場合は

+0

する方法はありますテキストのみのhboxに標準の高さがあることを知っていますか?私は、自分の決議のみに基づいてサイズ要求をしたくないので、それは画面上にあったはずのサイズに基づいているからです。これが意味をなさないことを望みます。 – user381261

+0

Widget.size_request(http://www.pygtk.org/docs/pygtk/class-gtkwidget.html#method-gtkwidget-size-request)があなたに役立つかどうかを確認できます –