【问题标题】:wxpython textctrl doesn't write when boundwxpython textctrl 绑定时不写
【发布时间】:2023-03-11 12:49:02
【问题描述】:

我一直在做一个简单的 textctrl 项目来更熟悉 wxpython,但我遇到了一个小障碍。我正在制作一个简单的代码编辑器,目前正在处理语法高亮。一切正常,除了因为我的 textctrl 绑定到一个事件:

self.status_area.Bind(wx.EVT_CHAR, self.onKeyPress)

我在该定义中有代码:

def onKeyPress (self, event):
    Line = self.status_area.GetValue()

它将不再允许用户输入任何字母。我可以毫无问题地删除并创建一个新行,但是如果我输入“hello”,什么都不会出现。在调试我的代码时,我知道它通过 onKeyPress() 和里面的代码运行,如果我将代码更改为:

def onKeyPress (self, event):
    event.Skip()

它会正常工作的。我试图将普通文本编辑器的工作重新编码到 onKeyPress() 中,但它开始变得过于庞大。任何有关此事的帮助将不胜感激。

【问题讨论】:

  • 解决了我的问题,非常感谢。这是一个非常好的论坛。不过我不需要添加 event.skip()。
  • 如果它解决了您的问题,请不要忘记接受答案。您可以通过单击答案旁边的复选标记来做到这一点。
  • 解决了什么问题,我什么都看不到 :(

标签: wxpython bind textctrl


【解决方案1】:

尝试EVT_TEXT 而不是EVT_CHAR。在我的解决方案中,我在event.Skip()之后添加了它

【讨论】:

  • 在事件处理程序中调用event.Skip() 的位置无关紧要,只要在必要时调用即可。
【解决方案2】:

创建 textctrl

self.text_ctrl = wx.TextCtrl(self.panel_1, -1, "some thing", style=wx.TE_MULTILINE | wx.TE_RICH2 )

绑定

self.Bind(wx.EVT_TEXT, self.ON_Write, self.text_ctrl)

现在定义:

def ON_Write(self, event):
   line = self.text_ctrl.Value

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 2010-11-17
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 2013-09-14
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多