如何仅设置窗口的背景颜色,而不是所有子窗口小部件

如何仅设置窗口的背景颜色,而不是所有子窗口小部件

我只需要更改窗口的背景颜色,并保留系统颜色的小部件。

盒子之间的空间应该保持不同的颜色

http://ubuntuone.com/756mWfF2hTYwgiGCOccmEz

像这样

http://ubuntuone.com/3jCDQHtSt6KJfbYQ6YMH7F

我不知道这里是否有更好的方法让它看起来这样

答案1

您没有指定编程语言,因此为了简单起见我假设使用 Python。

在 gtk 中,大多数组件可以连接到一个暴露事件,然后可以用来手动绘制到小部件中(开罗用于此,所有这些小部件都附加有 cairo 上下文)

这是一个带有自定义颜色 Vbox 和两个按钮的窗口的简单示例,按钮之间的空间(此处设置为 20 像素)和按钮周围的小边框显示 VBox 的背景颜色。

import gtk


class MyColoredBox(gtk.VBox):
    def __init__(self, homogeneous=False, spacing=0):
        super(MyColoredBox, self).__init__(homogeneous, spacing)
        self.connect("expose-event", self.expose)

    def expose(self, widget, event):
        cr = widget.window.cairo_create()
        cr.set_source_rgb(1.0, 1.0, 0.5)
        cr.rectangle(event.area.x, event.area.y,
                     event.area.width, event.area.height)
        cr.fill()


class PyApp(gtk.Window):
    def __init__(self):
        super(PyApp, self).__init__()
        self.connect("destroy", gtk.main_quit)
        vbox = MyColoredBox(False, 20)
        b1 = gtk.Button("Hello")
        b2 = gtk.Button("World")
        vbox.add(b1)
        vbox.add(b2)
        self.add(vbox)
        self.show_all()


if __name__ == "__main__":
    PyApp()
    gtk.main()

最终的程序看起来是这样的: 在此处输入图片描述

相关内容