想办法改变wx.lib.屏蔽.TimeCtrl实例(windows上的wxPython)

2024-09-27 00:17:35 发布

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

好吧,问题是:

Hour being blocked from viewing

如您所见,在wx.lib.masked.TimeCtrl实例中编辑秒时,小时段将被部分阻塞。但宽度不能用size参数或SetSize方法改变,只能改变高度,不能解决问题。你知道吗

我已经检查了一点源代码,看起来TimeCtrlBaseMaskedTextCtrl的继承,它是wx.TextCtrlMaskedEditMixin的多重继承,基本上如果在创建新的TimeCtrl实例时给出了size

# allow for explicit size specification:
if size != wx.DefaultSize:
    # override (and remove) "autofit" autoformat code in standard time formats:
    maskededit_kwargs['formatcodes'] = 'T!'

但实际上maskededit_kwargs['formatcodes'] = 'T!'只是告诉MaskedEditMixin:1)这是一种时间格式;2)根据这些行强制所有字符显示为大写:

self._forceupper  = '!' in self._formatcodes
......
self._isTime     = 'T' in self._ctrl_constraints._formatcodes and _isTimeType(mask)

所以,基本上,那些声称允许显式大小规范的代码对它没有任何作用,我也有点不知所措了,看看哪个部分负责更改宽度,有人知道怎么做吗?你知道吗

p.S.:windows 7 64位上的wxPython 3.0.2.0


Tags: and实例inself编辑size宽度lib
1条回答
网友
1楼 · 发布于 2024-09-27 00:17:35

找到解决办法了!你知道吗

实际上在BaseMaskedTextCtrl中有一个SetFont方法:

def SetFont(self, *args, **kwargs):
        """ Set the font, then recalculate control size, if appropriate. """
        wx.TextCtrl.SetFont(self, *args, **kwargs)
        if self._autofit:
##            dbg('calculated size:', self._CalcSize())            
            self.SetClientSize(self._CalcSize())
            width = self.GetSize().width
            height = self.GetBestSize().height
##            dbg('setting client size to:', (width, height))
            self.SetInitialSize((width, height))

如您所见,SetInitialSize可以用来设置宽度和高度。你知道吗

很方便。你知道吗

相关问题 更多 >

    热门问题