如何更改gtk.MenuItem()的背景颜色

时间:2011-08-25 22:01:20

标签: python gtk pygtk menuitem

对于在Gtk中制作的弹出菜单,我想将第一个菜单项作为标题。优选地,其背景应该是白色的。由于--- according to the documentation ---不能改变gtk.Label的背景颜色,而是必须改变其容器的背景,在我看来gtk.MenuItem本身应该被修改。 / p>

但是,我已经徒劳地尝试了以下方法:

menu_item.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#FFFFFF'))

这适用于gtk.EventBox的容器,但对于gtk.MenuItem则不行。上面没有什么工作,我该怎么做才能让这个gtk.MenuItem背景变白?

PS:我宁愿不使用任何.rc文件。

2 个答案:

答案 0 :(得分:1)

这是一个示例,当鼠标悬停在其上时,将“退出”菜单设置为白色。希望它可以帮到你!

#!/usr/bin/python

import gtk

class PyApp(gtk.Window):

    def __init__(self):
        super(PyApp, self).__init__()

        self.set_title("Simple menu")
        self.set_size_request(250, 200)
        self.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(6400, 6400, 6440))
        self.set_position(gtk.WIN_POS_CENTER)

        mb = gtk.MenuBar()

        filemenu = gtk.Menu()
        filem = gtk.MenuItem("File")
        filem.set_submenu(filemenu)

        exit = gtk.MenuItem("Exit")
        style = exit.get_style().copy ()
        style.bg[gtk.STATE_NORMAL] = exit.get_colormap().alloc_color (0xffff, 0x0000, 0x0000)
        exit.set_style (style)

        exit.connect("activate", gtk.main_quit)
        filemenu.append(exit)

        mb.append(filem)

        vbox = gtk.VBox(False, 2)
        vbox.pack_start(mb, False, False, 0)

        self.add(vbox)

        self.connect("destroy", gtk.main_quit)
        self.show_all()

PyApp()
gtk.main()

为此,我玩“风格”。

答案 1 :(得分:0)

弄乱它之后,我发现这可以更改主菜单上的文本:

menu_item.child.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#FFFFFF'))

但是,如果要将菜单的整个背景设为白色,则需要更改父菜单,而不是MenuItem,如下所示:

menu = gtk.Menu()
menu_item = gtk.MenuItem("File")
menu_item.set_sumenu(menu)
menu.modify_bg(gtk.STATE_NORMAL, gtk.gdk.Color(65355,65355,65355))