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



对于在Gtk中制作的弹出式菜单,我希望将第一个菜单项作为标题。它的背景最好是白色的。因为——根据文档——一个人不能改变gtk.Label的背景颜色,而是必须改变它的容器的背景,在我看来,gtk.MenuItem本身应该被修改。

然而,我已经尝试了以下无效:

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

这将工作的容器作为gtk.EventBox,但gtk.MenuItem它不。什么不工作在这里上面,我能做些什么让这个gtk.MenuItem背景白色?

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

下面是一个示例,当鼠标悬停在"exit"菜单上时,该菜单将显示为白色。希望能帮到你!

#!/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()

要做到这一点,我使用"style"

在摆弄它之后,我发现这将工作来改变主菜单上的文本:

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

但是如果你想要整个菜单的背景是白色的,你需要改变父菜单,而不是菜单项,像这样:

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))

最新更新