微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

禁用系统上的视觉效果时,TextCtrl 无法使用提示

如何解决禁用系统上的视觉效果时,TextCtrl 无法使用提示

我注意到,如果您在 Windows 7 中为 TextCtrl 设置了提示,那么小部件在某些视觉效果设置下的行为会不正确。

如果系统禁用了视觉效果,并且为widget设置了提示,那么在输入文本后,GetValue方法总是返回一个空字符串。

示例:

import wx


class Frame(wx.Frame):

    def __init__(self):
        super().__init__(None)

        Box = wx.BoxSizer(wx.VERTICAL)

        Box.Add(wx.StaticText(self,label='textCtrl'),wx.ALL,5)
        textCtrl = wx.TextCtrl(self,size=(300,-1),style=wx.TE_CENTRE,name='textCtrl')
        Box.Add(textCtrl,5)
        textCtrl.Bind(wx.EVT_TEXT,self.OnTextChanged)

        Box.Add(wx.StaticText(self,label='textCtrlHint'),5)
        textCtrlHint = wx.TextCtrl(self,name='textCtrlHint')
        Box.Add(textCtrlHint,5)
        textCtrlHint.SetHint('HINT')
        textCtrlHint.Bind(wx.EVT_TEXT,self.OnTextChanged)

        self.SetSizer(Box)

    def OnTextChanged(self,event):
        textCtrl = event.GetEventObject()
        print(f'{textCtrl.GetName()} value:',repr(textCtrl.GetValue()))


app = wx.App()
Frame().Show()
app.MainLoop()

视觉效果设置和程序输出(我依次在每个字段中输入文本“Text”):

enter image description here

视觉效果设置(最佳性能)和程序输出

enter image description here

禁用“在窗口和按钮上使用视觉样式”标志时不起作用。

可能是什么问题?能解决吗?

系统参数:

  • Windows 7 x32 (VirtualBox)
  • Python 3.7.9
  • wxPython 4.0.7.post2

P.S.:在 Windows 10 上一切正常。 P.P.S.:它在 wxPython 4.1.1 中正常工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。