我正在使用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)
答案 0 :(得分:3)
如果您只想缩小“关闭”按钮,请查看示例 - Epiphany删除按钮周围的大部分填充。
gtk_rc_parse_string
是gtk.rc_parse_string
); 结果:
(这是他们代码的稍微旧版本; Ephy trunk使用GTK + 3.0 CSS样式,但同样的想法。)
答案 1 :(得分:1)
我猜你能做的就是
查看以下示例是否适合您:
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)
希望这有帮助,尊重