PyGObject GTK3 小部件颜色不起作用



我最近开始使用pygtk/PyGObject,并一直在尝试使用从此处的QA之一获得的以下代码行来应用或更改背景颜色或简单的按钮或任何其他小部件。

self.button.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0.0, 1.0, 0.0, 1.0))

但这似乎不适用或有效。

整个示例测试程序在这里。

#!/usr/bin/env python
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk

class MyWIndow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
self.button = Gtk.Button(label="Click")
self.button.override_background_color(Gtk.StateFlags.NORMAL, Gdk.RGBA(0.0, 1.0, 0.0, 1.0))
self.button.connect("clicked", self.on_button_clicked)
self.add(self.button)
def on_button_clicked(self, widget):
Gtk.main_quit()

win = MyWIndow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

我错过了什么吗? 提前谢谢。

此方法在 Gtk+2.0 上使用,似乎也用于 Gtk+ 3.0 的第一个版本,但在 3.16 版中已弃用:

从 Python API:

版本 3.0 中的新功能。

自版本 3.16 起已弃用:此函数在 基于 CSS 的渲染的上下文。如果您想更改小部件的方式 呈现其背景 您应该使用自定义 CSS 样式,通过 特定于应用程序的 Gtk.StyleProvider 和 CSS 样式类。您可以 同时通过 Gtk.Widget 覆盖小部件的默认绘图 ::d原始信号,并使用开罗绘制特定的颜色,无论 CSS 样式。

有关迁移到 CSS 的更多信息。

使用预定义 css 类的示例(建议的操作和破坏性操作(:

#!/usr/bin/env python
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk

class MyWIndow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self)
self.button = Gtk.Button(label="Click")
self.button.get_style_context().add_class("suggested-action")
self.button.connect("clicked", self.on_button_clicked)
self.add(self.button)
def on_button_clicked(self, widget):
self.button.get_style_context().add_class("destructive-action")

win = MyWIndow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

最新更新