繁体   English   中英

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

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

我想获取当前textview的背景色以进行更改并稍后恢复。

这是我尝试的:

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

我尝试了所有可能的状态,但是没有一个返回正确的背景颜色(在我的情况下为白色)

知道如何获得它吗?

我不确定您的特定问题是什么,而没有看到更多代码,但这是一个快速的示例,该示例将覆盖背景,然后单击按钮将其还原:

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