从 wx.TextCtrl 中删除行

发布于 2024-07-11 18:58:48 字数 186 浏览 10 评论 0原文

我正在使用 wx.TextCtrl 从网络守护程序输出文本。
由于输出非常冗长,TextCtrl 中的文本大小可能会变得很大(顺便说一句,TextCtrl 的内容大小有限制吗?)
当 TextCtrl.GetNumberOfLines() 超过预定义的阈值时,我想从 TextCtrl 中删除前 N 行。 实现这一目标的最佳方法是什么?

I am using a wx.TextCtrl to output text from a network daemon.
As the output is quite verbose, the size of text in the TextCtrl can become huge (BTW is there any limitation on the size of the contents of a TextCtrl?)
I would like to delete the top N lines from the TextCtrl when TextCtrl.GetNumberOfLines() exceeds a predefined treshold.
What is the best way to accomplish this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

音栖息无 2024-07-18 18:58:48

SetMaxLength 参考表示限制取决于底层本机文本控件,但是至少应为 32KB。

关于删除前N行,您可以尝试调用GetLineLength为0。 .N-1,计算总和S,然后调用Remove(0, )

The SetMaxLength reference says that the limitation depends on the underlying native text control,but should be 32KB at least.

About deleting the top N lines, you could try to call GetLineLength for 0..N-1, calculate the sum S and then call Remove(0,S)

与往事干杯 2024-07-18 18:58:48

wx.TextCtrl的Remove方法怎么样?

每当您要添加新文本时,您都可以检查当前文本是否显得太长,并从开头删除一些文本。

How about the Remove method of wx.TextCtrl?

Whenever you're about to add new text, you can check if the current text appears too long and remove some from the start.

手心的海 2024-07-18 18:58:48

Remove() 应该可以解决问题。

在 Windows 上,不带 wx.TE_RICH 标志的 TextCtrl 不能超过 64 KB。

Remove() should do the trick.

TextCtrl without wx.TE_RICH flag can't have more than 64 KB on Windows.

£烟消云散 2024-07-18 18:58:48

您应该能够使用 wx.TextCtrl .PositionToXY()wx.TextCtrl.XYToPosition() 将位置(从开始处以字符为单位测量)与 (column, line_num) 对相互转换。

因此,您可以使用 i = wx.TextCtrl.XYToPosition(0, n) 来获取特定行 n 的位置 i(或者n+1,具体取决于您如何从 0 或 1 开始计数),然后调用 wx.TextCtrl.Remove(0, i) 删除前n行。

You should be able to use wx.TextCtrl.PositionToXY() and wx.TextCtrl.XYToPosition() to convert position (measured in characters from start) to and from a (column, line_num) pair.

So, you can use i = wx.TextCtrl.XYToPosition(0, n) to get the position i of a particular line n (or n+1, depending on how you count them 0- or 1-based), then call wx.TextCtrl.Remove(0, i) to remove the first n lines.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文