【问题标题】:Best way to replace an arbitrary row in a multiple line wxTextCtrl在多行 wxTextCtrl 中替换任意行的最佳方法
【发布时间】:2012-09-30 23:47:15
【问题描述】:

GetLineText 非常适合获取特定的行,但没有对应的 SetLineText。如果存在的话,那就是我正在寻找的东西。既然它似乎没有,那么处理这个问题的最佳方法是什么?

注意:我不想每次都替换所有文本,因为我担心性能。我的用例让我为另一个控件中的每个字符更改替换一行(或行范围)。因此,让我调用 SetValue 的解决方案不是我想要的。

【问题讨论】:

    标签: wxpython wxtextctrl


    【解决方案1】:

    我认为您正在寻找的是 Replace() 方法:

    替换(self, from, to, value)

    http://wxpython.org/docs/api/wx.TextCtrl-class.html

    【讨论】:

    • 我之前在那个网址,注意到替换并发现没有替换的详细信息。去别处(docs.wxwidgets.org/2.8/wx_wxtextctrl.html#wxtextctrlreplace)看看细节,它谈到了角色的位置。我想我可以使用它,但是如何在不扫描所有文本的情况下到达特定行以查找和计数'\n'?我认为 XYToPosition 会给我带来快乐,但是为它提供 (5,0) 的参数,当我期待某个更高的数字表示文本控件中 5 行的字符位置时,它返回了 5。进一步的想法?
    • GetSelection() 应该返回两个值
    • 感谢您的跟进。文档说,“获取当前的选择范围。”问题是这都是程序化的,所以没有选择。
    • 是的,我知道。但是我假设您以某种方式在 textctrl 中选择了一个字符串,这意味着您知道要替换的字符串的位置。您可能还想在 wxPython 邮件列表上询问。并且提供一个小的可运行示例也可能会有所帮助。
    • 我一直在寻找“最好”的方式,我想这可能就是它了。我只需要跟踪 \n 的位置,然后智能地使用这些位置。谢谢迈克!
    猜你喜欢
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 2010-09-07
    • 2010-11-14
    相关资源
    最近更新 更多