输入密钥wx.TextCtrl在Mac上有n

2024-06-17 13:38:08 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在macosxyosemite上运行下面的程序时,按textcrl中的enter键对textcrl的内容没有任何影响(我需要它在文本中输入一个新行)。在

添加或删除TE_PROCESS_ENTER样式没有任何效果;EVT_TEXT_ENTER事件不会被触发。顺便说一下,按enter键会触发一个键码为13的EVT_KEY_UP事件。在

奇怪的是,按Ctrl+Enter确实会导致在textcrl中输入一个新行,但它也不会触发EVT_TEXT_Enter事件。在

这是怎么回事?当然,我可以解决这个问题并检测keycode13,但这并不能真正解决问题。在

#!/usr/bin/env pythonw

import wx

class MainWindow(wx.Frame):
    def __init__(self, title):
        wx.Frame.__init__(self, None, title=title, size=(500,500))
        self.tc = wx.TextCtrl(self, wx.TE_MULTILINE|wx.TE_PROCESS_ENTER, size=(200,100))
        self.tc.Bind(wx.EVT_KEY_UP, self.OnKeyUp, self.tc)
        self.tc.Bind(wx.EVT_TEXT_ENTER, self.OnEnter, self.tc)
        self.Show(True)

    def OnKeyUp(self, event):
        print event.GetKeyCode()

    def OnEnter(self, event):
        # Never gets called
        print "enter!"

if __name__ == '__main__':
    app = wx.App()
    frame = MainWindow('Test')
    app.MainLoop()

我在macosx(Yosemite)上,使用python2.7.9(通过自制程序)和wxpython3.0.2.0。在


Tags: textself程序eventtitledef事件process
1条回答
网友
1楼 · 发布于 2024-06-17 13:38:08

问题出在对wxTextCtrl构造函数的调用中;没有正确传递标志。在

self.tc = wx.TextCtrl(self, wx.TE_MULTILINE|wx.TE_PROCESS_ENTER, size=(200,100))

真的应该是

^{pr2}$

文本控件未初始化为多行控件。在

相关问题 更多 >