wxPython插入符号移动平衡

2024-06-16 11:42:05 发布

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

当textcrl/Styled textcrl中的插入符号的位置发生更改时,调用什么事件?我需要绑定事件以在状态栏中显示插入符号的当前位置。在


Tags: 事件符号状态栏styledtextcrl
3条回答

我不认为有这样的活动,但你可以试试wx.EVT_SET_光标. 或者,你可以wx.EVT_字符或者一个EVT_KEY_x事件,并使用TextCtrl的GetInsertionPoint()方法来知道光标在哪里。当您使用鼠标事件在文本控件中单击时,可能还需要调用该方法。在

为了知道鼠标何时被放置在任何窗口内,你可以绑定wx.EVT_进入窗口(见here

尝试将wx.EVT_KEY_UP事件与wx.TextCtrl对象绑定,如下所示: 在

import wx

class MyForm(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY, "Show Caret Position", size=(400, 140))
        panel = wx.Panel(self, wx.ID_ANY)
        sizer = wx.BoxSizer(wx.VERTICAL)
        text = wx.StaticText(panel, -1, "Text:", (10, 22))
        self.textCtrl = wx.TextCtrl(
                panel,
                -1, "",
                (50,5),
                size=(250, 50),
                style=wx.TE_MULTILINE
            )
        self.textCtrl.SetInsertionPoint(0)
        self.textCtrl.Bind(wx.EVT_KEY_UP,self.onTextKeyEvent)
        self.textCtrl.Bind(wx.EVT_LEFT_UP,self.onTextKeyEvent)
        self.statusbar = self.CreateStatusBar(1)
        panel.SetSizerAndFit(sizer, wx.VERTICAL)

    def onTextKeyEvent(self, event):
        statusText = "Caret Position: "+str(self.textCtrl.GetInsertionPoint())
        self.SetStatusText(statusText,0)
        event.Skip()


#Run application
if __name__ == "__main__":
    app = wx.PySimpleApp()
    frame = MyForm()
    frame.Show()
    app.MainLoop()

我用Python 2.7+wxPython 2.8Windows 7环境中进行了测试。在

Here is how it should look like

相关问题 更多 >