代码之家  ›  专栏  ›  技术社区  ›  John

在Python中更改Gtk-Toglebutton的背景颜色

  •  0
  • John  · 技术社区  · 3 年前

    我已经找了几天关于如何在Python/Gtk3中更改小部件颜色的信息,但没有找到太多。我特别想做的是更改CSS中ToggleButtons的颜色。Gtk文档对我没有帮助,因为我不懂C。

    我尝试在以下位置理解代码: Change the Background color of a Toglebutton when pressed in GTK3 (C language) ,并将其更改为Python,如下所示,但按钮颜色不变。有人能告诉我,是否有一个很好的资源可以让Python程序员使用Gtk程序的CSS,或者有人能给我指明正确的方向来更改下面的代码吗?提前谢谢。

    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()
    
    1 回复  |  直到 3 年前
        1
  •  1
  •   Satyam Mishra    3 年前

    更改的颜色 ToggleButton 在使用CSS的Python/Gtk中,您可以按照以下步骤操作:

    • 创建 Gtk.CssProvider() 对象来存储您的CSS代码。
    • 使用 Gtk.StyleContext.add_provider_for_screen() 方法将CSS提供程序添加到应用程序的屏幕中。
    • 使用小部件名称和要更改的CSS属性为ToggleButton定义CSS样式。

    下面是一个示例代码片段,演示如何更改 切换按钮 以下为:

    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() 容器我们设置了 切换按钮 "my_toggle_button" 使用 set_name() 方法然后,我们为 切换按钮 使用小部件名称和 "background-color" 所有物

    最后,我们创建 Gtk.CssProvider()公司 对象来存储CSS代码,并使用 load_from_data() 方法我们使用 Gtk.StyleContext添加_提供程序_屏幕() 优先级为的方法 Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION 。这确保了CSS样式将应用于我们的应用程序中的小部件。