如何在textview中仅打印蓝色字符

2024-06-17 15:46:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想让字符只打印成蓝色。 怎么做

下面是示例程序代码,它是大多数程序的一个片段

我将非常感谢你的帮助

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk

class TextViewWindow(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self, title="awesome gui")
        self.set_resizable(True)
        self.set_default_size(700, 550)
        self.grid = Gtk.Grid()
        self.add(self.grid)
        self.create_textview()
        self.buffer = []

    def create_textview(self):
        scrolledwindow = Gtk.ScrolledWindow()
        scrolledwindow.set_hexpand(True)
        scrolledwindow.set_vexpand(True)
        self.grid.attach(scrolledwindow, 0, 2, 80, 1)
        self.textview = Gtk.TextView()
        scrolledwindow.add(self.textview)

        self.textbuffer = self.textview.get_buffer()
        self.textview.set_editable(False)
        self.textview.set_cursor_visible(False)

        self.textview.connect("key-press-event", self.on_key_down)

    def on_key_down(self, widget, event, data=None):

        znak_p = event.string

        end_iter_m = self.textbuffer.get_iter_at_line_offset(1, 1)
        qwerty_tag = self.textbuffer.create_tag(None, editable=True, foreground="blue")
        self.textbuffer.insert_with_tags(end_iter_m, znak_p, qwerty_tag)

win = TextViewWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

Tags: keyselfeventtruegtkdeftagcreate
1条回答
网友
1楼 · 发布于 2024-06-17 15:46:06

您的on_key_down处理程序错误:

  • 每次按键时都会创建一个匿名标记
  • 您正在为^{}属性使用无效字符串
  • 您没有从回调返回一个值,告诉GTK您是否处理了事件(因此应该停止事件传播)

GtkTextTag:foreground属性使用与^{}函数相同的格式;如果你想要蓝色,你应该用rgba(0.0, 0.0, 1.0, 1.0)而不是“蓝色”

正确的处理程序是:

    def on_key_down(self, widget, event, data=None):
        znak_p = event.string
        end_iter_m = self.textbuffer.get
        self.textbuffer.insert_with_tags(end_iter_m, znak_p, self.qwerty_tag)
        return True

相关问题 更多 >