PyGtk文本缓冲区使用了太多的内存,想要清理它,但iter不想

2024-05-13 19:22:41 发布

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

所以我正在学习如何编写代码,我正在使用pygtk为我正在使用的irc机器人制作gui。机器人作为一些有趣的命令和stuf,但我在这里真正的目的是,我打印聊天信息到一个文本缓冲区,它使内存上升,这真的不是一个问题,除非你有大量的信息或希望这是在所有的时间。但是考虑到这个问题,我希望机器人在到达textbuffer中的500条消息(或500行)时,他会从文本缓冲区中删除前250条消息,这样可以降低内存使用量,并且仍然有大量的消息可以读取给正在使用gui的人。你知道吗

我的问题是,我真的不知道如何做到这一点,如果我使用iters他们将变得毫无用处时删除250行,因为我已经改变了textbuffer,我也试图使用标记,但它看起来像我知道如何使用它们。。。你知道吗

砰的一声!xD公司

代码可以在here中找到。textbuffer位于内部运行.py名为chatbuffer。你知道吗


Tags: 内存代码文本命令目的信息消息irc
1条回答
网友
1楼 · 发布于 2024-05-13 19:22:41

解决了,卡帕

我用这个来删除:

if chatbuffer.get_line_count() > 10:
    chatbuffer.delete(chatbuffer.get_iter_at_line(0), chatbuffer.get_iter_at_line(251))

而不是像这样定义inter:

end_inter = chatbuffer.get_end_inter()

我只是想用一下:

chatbuffer.get_end_inter()

像这样:

chatbuffer.insert(chatbuffer.get_end_iter(), user + " > " + message + "\n")

编辑:嗯,我很笨,我创建了一个完整的另一个questin,因为我在这之后遇到了一个错误,因为我测试了10行,删除了5行,忘了在最后的代码中将它改为500。gtk-error **: gtk_text_btree_previous_line ran out of lines aborting

相关问题 更多 >