簡體   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