【问题标题】:Capturing enter key for WxPython Styled Text Control捕获 WxPython 样式文本控件的回车键
【发布时间】:2013-03-17 11:38:13
【问题描述】:

通过导入wx.stc 在 wxpython 中使用 StyledTextControl,我如何将 Enter 键捕获为事件?我尝试了几种方法,但似乎都说错误或根本不起作用。

我太公平了:

self.text.Bind(wx.stc.STC_KEY_DOWN, self.hw)

def hw(self, event):
  if event.GetKeyCode == wx.stc.STC_KEY_RETURN:
    self.text.AddText('Hello World')
    event.Skip()

self.text 是我的stc。

只是似乎不适合我。我是使用 wx 函数还是 stc 函数来捕获事件?

【问题讨论】:

    标签: python wxpython scintilla


    【解决方案1】:

    您好,我知道这有点旧了,但我用过它,它似乎可以工作。

    import wx
    import wx.stc
    
    self.m_message = TextCtrl( self, ID_ANY, EmptyString, DefaultPosition, Size( 200,100 ), 0 )
    self.m_message.Bind(EVT_KEY_DOWN, self.DoKeyPress)
    
    def DoKeyPress(self, event):
        if event.GetKeyCode() == STC_KEY_RETURN:
            self.DoSendTextMessage(event)
        else:
            event.Skip()
    

    【讨论】:

    • 这对我不起作用,您必须编写 wx.EVT_KEY_DOWN 和 wx.stc.STC_KEY_RETURN 才能使此代码起作用。
    【解决方案2】:

    这实际上在文档中进行了解释:https://wxpython.org/Phoenix/docs/html/wx.TextCtrl.html。将样式设置为 TE_PROCESS_ENTER 将启用事件,然后您可以绑定它。

    from wx import TextCtrl, EVT_TEXT_ENTER, TE_PROCESS_ENTER
    text_input = TextCtrl(parent, style=TE_PROCESS_ENTER)
    text_input.Bind(EVT_TEXT_ENTER, callback)
    

    【讨论】:

      【解决方案3】:

      我认为您应该使用 StyledTextCtrl 事件来处理 StyledTextCtrl 中的事件,而不是 wx 事件。

      要处理的最明显的事件似乎是EVT_STC_KEY。但是,根据documentation for the event,这可能行不通:

      Scintilla 文档说:

      Reports all keys pressed. Used on GTK+ because of some problems with keyboard focus. Not sent by Windows version.

      据作者所知,这意味着该事件虽然在技术上可通过 wxWindows 获得,但实际上永远不会发生。

      您可以尝试处理 EVT_STC_CHARADDED 事件,但这似乎是在添加新行后调用的。为此事件调用event.Skip() 无效。在 Windows 上,此事件会触发两次,一次用于回车符\r,一次用于换行符\n

      最终,您尝试实现的目标可能无法实现。

      (顺便提一下,STC_KEY_DOWN 是代表向下箭头键的代码,而不是表示已按下的键。)

      【讨论】:

        【解决方案4】:

        你可以使用wx.EVT_KEY_DOWN,回车键是13

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-02-13
          • 2015-10-16
          • 2012-02-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-04
          • 1970-01-01
          相关资源
          最近更新 更多