简体   繁体   English

如何在pygobject“ gtk3”中获取textview的背景?

[英]How to get background of textview in pygobject “gtk3”?

I'd like to get the current background color of my textview to change it and restore it later. 我想获取当前textview的背景色以进行更改并稍后恢复。

here what I tried: 这是我尝试的:

context = textview.get_style_context()
state = Gtk.StateFlags.NORMAL
color = context.get_background_color(state)

I tried all possible states, but none returns the correct background color (white in my case) 我尝试了所有可能的状态,但是没有一个返回正确的背景颜色(在我的情况下为白色)

Any idea how to get it? 知道如何获得它吗?

I'm not exactly sure what you specific problem is without seeing more code, but here is a quick example that overrides the background and then restores it on a button click: 我不确定您的特定问题是什么,而没有看到更多代码,但这是一个快速的示例,该示例将覆盖背景,然后单击按钮将其还原:

from gi.repository import Gtk, Gdk
import sys


class MyWindow(Gtk.ApplicationWindow):
    def __init__(self, app):
        Gtk.Window.__init__(self, title="Textview example", application=app)
        self.set_default_size(250, 100)
        self.set_border_width(10)

        self.view = Gtk.TextView()
        self.style_context = self.view.get_style_context()
        self.default_bg_color = self.style_context.get_background_color(Gtk.StateFlags.NORMAL)
        self.view.override_background_color(Gtk.StateFlags.NORMAL,
                                            Gdk.RGBA(0, 0, 0, 1))

        self.btn = Gtk.Button(label="Click Here")
        self.btn.connect("clicked", self.on_btn_clicked)

        box = Gtk.VBox()
        box.pack_start(self.view, True, True, 0)
        box.pack_start(self.btn, False, False, 0)
        self.add(box)

    def on_btn_clicked(self, widget):
        current_bg = self.style_context.get_background_color(Gtk.StateFlags.NORMAL)
        if current_bg == self.default_bg_color:
            self.view.override_background_color(Gtk.StateFlags.NORMAL,
                                                Gdk.RGBA(0, 0, 0, 1))
        else:
            self.view.override_background_color(Gtk.StateFlags.NORMAL, 
                                                self.default_bg_color)


class MyApplication(Gtk.Application):
    def __init__(self):
        Gtk.Application.__init__(self)

    def do_activate(self):
        win = MyWindow(self)
        win.show_all()

    def do_startup(self):
        Gtk.Application.do_startup(self)

app = MyApplication()
exit_status = app.run(sys.argv)
sys.exit(exit_status)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM