Python如何将文本写入GTK+Vte终端小部件?

2024-05-21 02:13:51 发布

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

我尝试使用Vte终端小部件来显示python脚本中的文本。在

我没有设置工作目录或模拟器,我只是想要一个空的终端来处理文本和ansi转义序列

我有这段代码,它在python 2.7中工作:

import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Vte', '2.91')

from gi.repository import Gtk, Vte
from gi.repository import GLib
import os

terminal     = Vte.Terminal()
terminal.spawn_sync(
    Vte.PtyFlags.DEFAULT,
    None,
    [],
    [],
    GLib.SpawnFlags.DO_NOT_REAP_CHILD,
    None,
    None,
    )

win = Gtk.Window()
win.connect('delete-event', Gtk.main_quit)
win.add(terminal)
win.show_all()

terminal.feed('hello') #string to display

Gtk.main()

但它在python3.5中不起作用,我得到的只是一个空白的终端。在


Tags: from文本importnone终端gtkmainversion
1条回答
网友
1楼 · 发布于 2024-05-21 02:13:51

以下是显示文本的正确方法:

import gi
gi.require_version('Gtk', '3.0')

from gi.repository import Gtk, Gdk, GLib
import os

textview = Gtk.TextView()
textview.set_name("TextView")
buf = Gtk.TextBuffer()
textview.set_buffer(buf)
buf.set_text("This is a test message\n")

style_provider = Gtk.CssProvider()

css = """
#TextView{
    background-color: black;
}
"""
style_provider.load_from_data(bytes(css.encode()))
    Gtk.StyleContext.add_provider_for_screen(
    Gdk.Screen.get_default(), style_provider,
    Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
    )

for color in ("red", "yellow", "green", "blue", "white"):
    buf.insert_markup(
        buf.get_end_iter(),
        '<span color="{:s}">This is a test message</span>\n'.format(color),
         -1)

win = Gtk.Window()
win.connect('delete-event', Gtk.main_quit)
win.add(textview)
win.show_all()


Gtk.main()

顺便说一下,这容易多了。在

编辑:包括颜色。在

相关问题 更多 >