gpt4 book ai didi

python - wxPython textCtrl焦点事件的写法

转载 作者:太空宇宙 更新时间:2023-11-04 05:59:29 25 4
gpt4 key购买 nike

我试图在用户点击 textCtrl 时触发一行代码。最终目标是在单击时突出显示框中的内容。我知道 wx.EVT_SET_FOCUS 可以做到这一点,但它要么有问题,要么我实现错误。这是我的代码:

self.m_textCtrl1 = wx.TextCtrl(self.m_panel2, wx.ID_ANY, wx.EmptyString, 
wx.DefaultPosition, wx.Size(100,-1), wx.TE_LEFT)
self.m_textCtrl1.SetMaxLength(8)
self.m_textCtrl1.SetMinSize(wx.Size(100,-1))
self.m_textCtrl1.SetMaxSize(wx.Size(100,-1))
self.m_textCtrl1.Bind(wx.EVT_SET_FOCUS, self.highlightText, self.m_textCtrl1)

此代码能够在我需要时成功触发 highlightText,但由于某种原因,光标从 textCtrl 中移除,使用户无法选择他的位置、突出显示或退格。任何建议,将不胜感激。作为旁注,有没有办法在 wxFormBuilder 中执行此操作?我使用它构建了我的应用程序,但无法添加焦点事件。似乎它提供的唯一焦点事件是针对整个窗口的。

编辑 2014 年 9 月 19 日:Mike,这是我在 gui.py 中自动生成的 wxFormBuilder 代码:

class OrderNumEntry ( wx.Frame ):
def __init__( self, parent ):
# there's a lot more stuff here, but it's irrelevant
self.m_textCtrl1.Bind( wx.EVT_SET_FOCUS, self.highlightText )

def __del__( self ):
pass

# Virtual event handlers, overide them in your derived class
def highlightText( self, event ):
event.Skip()

...这是我编写的事件处理程序

import wx, gui

class OrderFrame(gui.OrderNumEntry):
def __init__(self, parent):
gui.OrderNumEntry.__init__(self, parent)
# again, a lot more irrelevant stuff here

def highlightText(self, event):
print 'test'

事件运行良好(在测试中,当我需要它时打印),但我无法突出显示文本,也看不到我的光标。

最佳答案

您没有显示您的事件处理程序,但我猜您需要在事件结束时调用 event.Skip()。我还想指出您错误地绑定(bind)了事件。应该是:

self.m_textCtrl1.Bind(wx.EVT_SET_FOCUS, self.highlightText)

self.Bind(wx.EVT_SET_FOCUS, self.highlightText, self.m_textCtrl1)

有关完整说明,请参阅 wxPython wiki:

关于python - wxPython textCtrl焦点事件的写法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com