1

我正在使用 wx.TextCrtl 绑定到 wx.EVT_TEXT 来接收来自用户的输入,但我不知道如何检测已按下哪个键(我可以使用 st[LengthOfString-1] 读取字符串上的最后一个字符,但是这对于不是字母的键(例如退格键)不好。如果我使用 wx.EVT_KEY_DOWN 事件,那么我看不到插入的数据。我该怎么做才能同时拥有它们?带有选项的文本控件操纵字符串以及按下时检测每个键的选项?

self.command_line = wx.TextCtrl(self.CommandLinePanel, -1, style = wx.TE_MULTILINE | wx.TE_PROCESS_ENTER)  # past: self.log.
        self.command_line.Bind(wx.EVT_TEXT, self.OnKeyCommandLine)

def OnKeyCommandLine(self, event):
    st = str(event.GetString())
    LengthOfSt = len(st)
    #...
    #my code
    #End of function

我怎样才能添加类似的东西

self.command_line.Bind(wx.EVT_KEY_DOWN, self.OnKeyWhich)

def OnKeyWhich(self, evt):
    print "The key pressed: %s" % evt.GetKeyCode() 

并接收两个事件或至少两个事件的结果?

4

1 回答 1

1

我希望这会有所帮助:

# Define an event handler
self.Bind(wx.EVT_CHAR_HOOK, self.OnKeyWhich, self.command_line)

# Determine when user push RETURN (for example):
def OnKeyWhich(self, event): 
    key = event.GetKeyCode()                
    if key == wx.WXK_RETURN:
        self.update_result()
    else:
        event.Skip()

以下是键码列表: https ://wxpython.org/Phoenix/docs/html/wx.KeyCode.enumeration.html

好看!

于 2019-10-01T15:07:02.003 回答