我在我的应用程序中有一个按钮,我希望它具有尺寸23x23像素与股票图标16x16像素。如何在我的应用程序中制作小型股票图标?
我想出了:
closeButton = gtk.ToolButton(gtk.STOCK_CLOSE)
closeButton.set_size_request(23, 23)
但是这个代码仅改变按键的大小,而不是图标的大小:/
我怎么能扩展我的按钮图标的股票?是否有任何小版本的库存项目?像gtk.STOCK_SMALL_CLOSE一样?
编辑 下面是示例程序来测试创建小股票项目
import gtk
class Tab(gtk.VBox):
def __init__(self, caption):
gtk.VBox.__init__(self)
self.Label = self.__createLabel(caption)
self.show_all()
def __createLabel(self, caption):
hbox = gtk.HBox()
label = gtk.Label(caption)
hbox.pack_start(label, True, True)
closeButton = gtk.ToolButton(self._getCloseIcon())
hbox.pack_start(closeButton, False, False)
hbox.show_all()
return hbox
def _getCloseIcon(self):
raise NotImplementedError
class TabWithNormalIcons(Tab):
def __init__(self, caption):
Tab.__init__(self, caption)
def _getCloseIcon(self):
return gtk.STOCK_CLOSE
class TabWithImage16Icons(Tab):
def __init__(self, caption):
Tab.__init__(self, caption)
def _getCloseIcon(self):
return gtk.image_new_from_stock(gtk.STOCK_CLOSE, 16)
class TabWithSmallToolbarIcons(Tab):
def __init__(self, caption):
Tab.__init__(self, caption)
def _getCloseIcon(self):
return gtk.image_new_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_SMALL_TOOLBAR)
class TabWithMenuIcons(Tab):
def __init__(self, caption):
Tab.__init__(self, caption)
def _getCloseIcon(self):
return gtk.image_new_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU)
class App(gtk.Window):
def __init__(self):
gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL)
self.connect('destroy', lambda event: gtk.main_quit())
self.set_default_size(640, 480)
notebook = gtk.Notebook()
tabNumber = 1
#Icon normal sizes
for i in range(3):
tab = TabWithNormalIcons('Tab %s' % str(tabNumber))
notebook.append_page(tab, tab.Label)
tabNumber += 1
#Icons with 16 pixel Image
for i in range(3):
tab = TabWithImage16Icons('Tab %s' % str(tabNumber))
notebook.append_page(tab, tab.Label)
tabNumber += 1
#Icons with small toolbar images
for i in range(3):
tab = TabWithSmallToolbarIcons('Tab %s' % str(tabNumber))
notebook.append_page(tab, tab.Label)
tabNumber += 1
#Icons with menu images
for i in range(3):
tab = TabWithMenuIcons('Tab %s' % str(tabNumber))
notebook.append_page(tab, tab.Label)
tabNumber += 1
self.add(notebook)
self.show_all()
a = App()
gtk.main()
同意但是,我宁愿使用像'image = gtk.image_new_from_stock(gtk.STOCK_CLOSE,gtk.ICON_SIZE_SMALL_TOOLBAR)'这样比我自己的大小,如果不是绝对必要的话。 – deinonychusaur
嗯,似乎它不工作,我的图标不小:/我编辑我的问题,并添加了简单的测试程序。 – BPS
在对此进行测试时,我注意到两件事:1.您不能指定数字图标大小,例如16,而只能指定常量gtk.ICON_SIZE_ *。 2. gtk.ToolButton中有魔法,它使它忽略给定的大小(我想,使用主题的默认值)。所以如果你真的想重写这个,使用gtk.Button。或者这样做是因为你没有把你的按钮放在工具栏中。如果您确实将它们放入工具栏中,请使用ToolButton并让gtk使用工具栏图标大小的主题设置。 –