几天来我一直在寻找有关如何在 Python/Gtk 3 中更改小部件颜色的信息,但没有找到太多信息。我特别想做的是在 CSS 中更改 ToggleButtons 的颜色。 Gtk 文档对我没有帮助,因为我不了解 C.
我试图理解以下代码:在 GTK3(C 语言)中按下时更改 Toglebutton 的背景颜色,并将其更改为 Python,如下所示,但按钮颜色没有改变。有人可以告诉我是否有一个很好的资源供 Python 程序员使用 CSS 编写 Gtk 程序,或者有人可以指出正确的方向来更改下面的代码以使其工作吗?提前谢谢你。
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
class btn:
def __init__(self):
# From https://stackoverflow.com/questions/41796529/
styleProvider=Gtk.CssProvider()
css = b"""
GtkWindow {
background-color: #A4A4A4;
color: cyan;
border-width: 3px;
border-color: blue;
}
#myGrid {
background-color: white;
border-style: solid;
border-width: 3px;
border-radius: 15px;
border-color: grey;
}
#myChild {
background-color: red;
border-style: solid;
border-width: 3px;
border-radius: 15px;
border-color: grey;
}
#tgl_btn{
background-color: red;
color: red;
}
GtkButton {
background-image: none;
background-color: blue;
}
GtkButton:active {
background-color: #00FF00;
}
"""
styleProvider.load_from_data(css)
Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),styleProvider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
self.window = Gtk.Window()
self.btn = Gtk.ToggleButton(label = 'tgl_btn')
self.window.add(self.btn)
self.window.show_all()
def main(self):
Gtk.main()
p=btn()
p.main()
要使用 CSS 在 Python/Gtk 中更改
ToggleButton
的颜色,您可以按照以下步骤操作:
Gtk.CssProvider()
对象来存储您的 CSS 代码。Gtk.StyleContext.add_provider_for_screen()
方法将 CSS 提供程序添加到应用程序的屏幕。这里有一个示例代码片段,演示了如何更改
ToggleButton
的颜色:
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk
class btn:
def __init__(self):
window = Gtk.Window()
window.connect("destroy", Gtk.main_quit)
# Create a Gtk.Grid widget
grid = Gtk.Grid()
window.add(grid)
# Create a Gtk.ToggleButton widget and add it to the grid
toggle_button = Gtk.ToggleButton("Toggle Button")
toggle_button.set_name("my_toggle_button")
grid.attach(toggle_button, 0, 0, 1, 1)
# Define the CSS style for the ToggleButton
css_provider = Gtk.CssProvider()
css_provider.load_from_data(b"""
#my_toggle_button {
background-color: red;
}
""")
Gtk.StyleContext.add_provider_for_screen(
Gdk.Screen.get_default(),
css_provider,
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
)
window.show_all()
if __name__ == "__main__":
btn()
Gtk.main()
在这个例子中,我们创建了一个
Gtk.ToggleButton()
小部件并将它添加到一个Gtk.Grid()
容器中。我们使用 ToggleButton
方法将 "my_toggle_button"
的名称设置为 set_name()
。然后,我们使用小部件名称和 ToggleButton
属性为 "background-color"
定义一个 CSS 样式。
最后,我们创建一个
Gtk.CssProvider()
对象来存储CSS代码,并使用load_from_data()
方法加载它。我们使用 Gtk.StyleContext.add_provider_for_screen()
方法将 CSS 提供程序添加到应用程序的屏幕,优先级为 Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
。这确保了 CSS 样式将应用于我们应用程序中的小部件。