如何像gnome-panel那样装饰GTK窗口?

2 投票
1 回答
2622 浏览
提问于 2025-04-16 16:53

我想做一个面板样式的应用程序,外观上很像gnome-panel。我想用GTK来实现这个(虽然我也考虑过Qt),最好是用Python来写。

我该如何给这个窗口添加装饰,让它可以应用颜色、渐变、位图或SVG图形呢?

1 个回答

1

一种方法是使用样式(下面的例子使用的是内联样式字符串):

#!/usr/bin/env python

import gtk

pixmap_rc = """
pixmap_path "/home/foo/images"
style "bar" {
    bg_pixmap[NORMAL] = "logo.svg"
} widget "*foo" style "bar"
"""

color_rc= """
style "bar" {
    bg[NORMAL] = "Hot Pink"
} widget "*foo" style "bar"
"""

def main ():
    window = gtk.Window()
    window.set_decorated(False)
    window.connect("destroy", gtk.main_quit)

    window.set_name("foo")
    gtk.rc_parse_string(color_rc)

    window.show_all()
    gtk.main()

if __name__ == "__main__":
    main ()

通过gtkrc设置颜色渐变似乎是特定于引擎的。

补充:这里有一个简单的gtkrc例子,包含拉伸的背景图片:

pixmap_path "/home/foo/images"
style "bar" {
    engine "pixmap" {
        image {
            function = FLAT_BOX
            file     = "test.png"
            stretch  = TRUE
        }
    }
} widget "*foo" style "bar"

撰写回答