【问题标题】:How to make wx.TextCtrl content NOT selected by default?如何使 wx.TextCtrl 内容默认不被选中?
【发布时间】:2014-09-01 19:02:27
【问题描述】:

这是我的问题:

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 到最后一个字符也是如此。这真的很烦人,因为默认情况下您输入的任何内容都会删除以前选择的内容,而且我找不到将光标设置到初始文本末尾的方法。那么如何解决这个问题呢?

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

【问题讨论】:

  • 如果你展示你的代码是如何整合它的。这将很容易解决问题!
  • @sundarnatarajСундар:刚刚添加了我的代码
  • SetInsertionPointEnd(self) 试试这个
  • @sundarnatarajСундар: 已经试过了,但是没用。我正在使用 wxPython 2.8.12.1、python 2.7.3 的 win 7 64bit

标签: python wxpython wxtextctrl


【解决方案1】:

很奇怪,您的 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!"

【讨论】:

  • 我已经尝试了以上所有方法,但都没有奏效,这个问题真的很烦人......
  • 您可以尝试在值字段中设置对象创建时的值。
  • 还是一样的,每次都是默认选中这些行
  • :( 这很奇怪。尝试使用单个 textctrl 小部件创建一个框架,看看它是否显示相同的行为。如果确实如此,那么它是您计算机的本机。顺便说一下,您的代码运行良好在我的机器上。我能想到的就是这些
  • 你在什么系统上?我用win 7和XP都试过一个textctrl小部件框架,结果是一样的:框架启动时默认选择所有内容。这真的让我很生气......
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多