当TextCtrl/Styled TextCtrl中的插入符号的位置已更改时,会调用哪个事件?我需要绑定事件以在状态栏中显示插入符的当前位置。wxPython插入符号移动事件
回答
尝试使用wx.TextCtrl
对象像这样绑定wx.EVT_KEY_UP
事件:
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()
我对Windows 7
环境Python 2.7
+ wxPython 2.8
测试。
是的,它在键盘上运行良好,非常感谢。但是当我用鼠标改变插入符号的位置时,它不能正常工作。 – 2012-05-03 13:08:45
喔---我忘了加上'MouseEvent'为'TextCtrl',只需添加一行'self.textCtrl.Bind(wx.EVT_LEFT_UP,self.onTextKeyEvent)”行'self.textCtrl.Bind(WX后.EVT_KEY_UP,self.onTextKeyEvent)”。它会在点击鼠标时起作用。 – 2012-05-04 06:40:52
@TendouKishi:我**编辑**代码。现在看。 – 2012-05-04 06:43:02
我不认为有这样的事件,但你可以尝试wx.EVT_SET_CURSOR。或者,您可以捕获wx.EVT_CHAR或其中一个EVT_KEY_ *事件,并使用TextCtrl的GetInsertionPoint()方法来知道游标的位置。当您在使用鼠标事件的文本控件中单击时也可能需要调用该方法。
wx.EVT_SET_CURSOR导致我的指针不能转换成'I'字母。有没有其他的方法可以在不阻止鼠标转换的情况下使用? – 2012-05-03 13:11:14
我可能应该说你可以使用wx.EVT_LEFT_DOWN而不是光标。试试看。 – 2012-05-03 13:33:04
它成功地没有停止我的鼠标指针的转换,但它需要双击鼠标才能使用鼠标移动... – 2012-05-03 13:40:52
为了知道什么时候鼠标放在你可以绑定任何wx.EVT_ENTER_WINDOW窗口中(见here)
- 1. Winforms ComboBox:当插入符号移动时的事件?
- 2. 在webkit-gtk中移动插入符号
- 3. TinyMCE在插入范围后移动插入符号
- 4. 在Text控件中检测插入符号移动
- 5. 添加逗号时,插入符号向后移动
- 6. wxPython输入按钮事件
- 7. wxPython:手动调用事件
- 8. wxpython textctrl更改插入符号的颜色
- 9. 插入符号
- 10. WxPython&符号使用
- 11. Slim C++信号/事件机制与插槽的移动语义
- 12. 当值改变时,插入符号向左端移动
- 13. 移动插入符号到DataGridViewTextBoxCell点击一个CheckBoxCell当在c#
- 14. 插入符号移动2个位置代替1
- 15. 使用PlainDocument在JTextField中移动插入符号
- 16. 如何在输入字母时移动div(如输入插入符号)?
- 17. JTextField - 在focusLost事件中更改插入符号位置
- 18. 移动插入符的位置?
- 19. 将PyQt4插件嵌入到wxPython窗口
- 20. 设置插入符号的位置,其中插入符号未插入JTextArea
- 21. SVN插入符号符号不工作在WinXP从SVN手动
- 22. 插入UITextField中的插入符号(ios)
- 23. Kendo移动MVV *输入更改事件
- 24. 正确的逻辑/无符号移位插入1而不是0符号位
- 25. jQuery插入元素符号
- 26. 用VBA插入符号
- 27. 错误:在插入符号
- 28. Chrome contenteditable插入符号
- 29. 将unicode符号插入edittext
- 30. 插入货币符号,itextSharp
试过wx.stc.EVT_STC_CHANGE,好,当我改变的内容,但当我只是简单地移动插入符号时没有用处。 – 2012-04-28 16:10:34