1

这是我的问题:

在此处输入图像描述

self.textCtrl1 = wx.TextCtrl(id=wx.ID_ANY, name='textCtrl1',
              parent=self, pos=wx.Point(0, 100), size=wx.Size(400, 100),
              style=wx.VSCROLL | wx.TE_MULTILINE, value='')
self.textCtrl1.SetValue("I don't want this line to be selected by default!\n")

如您所见,每次对话框开始时,wx.TextCtrl默认情况下始终选择内容,即使当我SetInsertionPoint到最后一个字符时也是如此。这真的很烦人,因为您输入的任何内容都会默认删除以前选择的内容,而且我找不到将光标设置到初始文本末尾的方法。那么如何解决这个问题呢?

PS:我正在使用 wxPython 2.8.12.1、python 2.7.3 的 win 7 64bit

4

3 回答 3

2

奇怪的是您的textCtrl文本会自动被选中。在正常情况下,光标只会指向框的开头。

尝试其中之一:

self.textCtrl.SetValue("I don't want this line to be selected by default!\n")
self.textCtrl.SetInsertionPoint(self.textCtrl.GetLastPosition())

或者而不是使用SetValue,使用这个:

print >> self.textCtrl, "I don't want this line to be selected by default!"
于 2014-07-11T13:47:10.843 回答
2

我有同样的问题。我发现我必须在运行 frame.Show() 方法后设置 textctrl 的值。

于 2016-01-11T22:43:08.960 回答
1

我已经阅读了 wxWidgets 论坛上的一些帖子,似乎在 wxWidgets 2.8x 的 Windows 上,默认情况下,多行文本是自动选择的,并且没有取消选择它的好方法。据说这是默认行为,因为它反映了 Windows API 的默认行为,尽管我不确定为什么他们会有一个名为 SetSelection() 的函数,它实际上并没有设置选择。wxWidgets 海报建议可能使用 wxRichTextCtrl,因为它不会自动选择。

他们还讨论了在 wxWidgets 的未来实现中默认取消选择多行文本控件,他们还提到在 OsX 下,默认行为是:单行 - 自动全选,多行 - 选择没有任何。

因此,您所看到的与其他人所看到的差异可能是由于不同的操作系统,甚至是不同版本的 wxWidgets。我只想说,我也有这个问题,还没有找到最好的解决方法。

但是,如果您不介意多行文本控件处理选项卡而不是用于 GUI 导航的选项卡,请使用属性 wxWANTS_CHARS 并且选择问题将消失。

于 2014-12-10T14:40:18.390 回答