【问题标题】:How to decorate a GTK window like eg. the gnome-panel?如何装饰 GTK 窗口,例如。侏儒面板?
【发布时间】:2011-05-03 10:23:55
【问题描述】:

我想做一个类似面板的应用程序,在外观上很像 gnome-panel。我想为此使用 GTK(尽管我已经研究过 Qt),最好使用 Python。

如何以应用颜色/渐变/位图/svg 的方式装饰窗口?

【问题讨论】:

    标签: python gtk panel window-decoration


    【解决方案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"
    

    【讨论】:

    • 不错,谢谢! :) 你对样式的文档或教程有什么建议吗?
    • @Benjamin:先检查一下:live.gnome.org/GnomeArt/Tutorials/GtkThemes
    • @Benjamin:示例中的样式没有什么特别之处,它们是遵循所有常规规则的普通 gtkrc 样式,即可以继承、扩展等。我已将它们嵌入为内联字符串,但你可以将它们保存为外部文件并使用gtk.rc_parse(filename) 加载它。是的,您可以拉伸背景图像,但公平地说,这不能用普通的 gtk 来完成,您应该为此使用引擎(例如“pixmap”),看看live.gnome.org/GnomeArt/Tutorials/GtkEngines/PixmapEngine(尤其是 FLAT_BOX 函数)。而且,恕我直言,我们已经超出了那里的范围:)
    • @Benjamin:查看使用像素图引擎进行 bg 图像拉伸的编辑
    • 我还添加了this Q&A on GTK,它用一个很好的例子回答了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多