如何在Gtk文本视图中添加新行?

2024-04-25 07:35:18 发布

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

这是我的问题,我在别处找不到答案。我想在Gtk文本视图(python3)中显示一些文本,每段文本后面都有一个新行。当我使用“\n”时,它显示“\n”,而不是实际添加新行。有没有办法我可以解决这个问题?在

这应该是我问题的可复制版本,然后我的输出。。。(注:我不是一个有经验的程序员)

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk

records = ()
tv = Gtk.TextView()

records += ("a", "\n", "b", "\n", "c", "\n")
tb = tv.get_buffer()
tb.set_text(str(records))

sw = Gtk.ScrolledWindow()
sw.set_size_request(300,400)
sw.add(tv)

w = Gtk.Window()
w.add(sw)
w.show_all()

Gtk.main()

Gtk窗口中的电流输出:

^{pr2}$

Gtk窗口中的期望输出:

 'a'
 'b'
 'c'

Tags: 答案文本import版本add视图gtksw
3条回答

添加到textbuffer,不需要先读取它,可以使用iters(某种程度上指向缓冲区的内容)来完成。例如,可以在缓冲区末尾添加asking for an ^{} at the end

    bff = Gtk.TextBuffer()
    view = Gtk.TextView(buffer = bff)
    bff.set_text("This is the beginning\n")

    iter = bff.get_end_iter()
    bff.insert(iter, "And this is a newly inserted line\n")

您还可以插入:

  • 在开头(^{}
  • 在文本(^{})中的某个偏移量(以字符为单位)
  • 在某一行(^{}
  • 在某些“标记”处,你在文本中留下(^{})等。。。在

已经向我展示了一种通过使用%s字符串格式来解决这个问题的方法。下面是我实际使用的代码示例:

tv = Gtk.TextView()
    for record in records:
        records_str += "Title: %s \nAuthors: %s \nSource: %s\n\n" %(record.get("TI"), ", ".join(record.get("AU")), record.get("SO"))

    tb = tv.get_buffer()
    tb.set_text("".join(records_str)) 

这将在单独的行上打印“Title”、“Author”和“Source”。在

您需要将名为records的变量中的数据连接到一个字符串中,如下所示:

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk

records = ()
tv = Gtk.TextView()

records += ("a", "\n", "b", "\n", "c", "\n")
tb = tv.get_buffer()
# join in one single string
tb.set_text("".join(records))


sw = Gtk.ScrolledWindow()
sw.set_size_request(300,400)
sw.add(tv)

w = Gtk.Window()
# Don't forget to connect your window's close button 
# to Gtk.main_quit signal, or whatever the signal you want
w.connect("delete-event", Gtk.main_quit)
w.add(sw)
w.show_all()

Gtk.main()

Gtk窗口内的输出将是:

^{pr2}$

相关问题 更多 >