寻找改变 wx.lib.masked.TimeCtrl 实例宽度的方法(windows 上的 wxPython)
Looking for a way to change width of wx.lib.masked.TimeCtrl instances (wxPython on windows)
好的,问题来了:
如您所见,在 wx.lib.masked.TimeCtrl
实例中编辑秒时,小时段将被部分阻止。但是用size
参数和SetSize
方法都不能改变宽度,只能改变高度,不能解决问题。
我查了一下源码,好像TimeCtrl
是对BaseMaskedTextCtrl
的继承,是对wx.TextCtrl
和[=的多重继承20=],基本上如果在创建新的 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.: wxPython 3.0.2.0 on windows 7 64bit
找到解决方案!
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
可用于设置宽度和高度。
挺方便的。
好的,问题来了:
如您所见,在 wx.lib.masked.TimeCtrl
实例中编辑秒时,小时段将被部分阻止。但是用size
参数和SetSize
方法都不能改变宽度,只能改变高度,不能解决问题。
我查了一下源码,好像TimeCtrl
是对BaseMaskedTextCtrl
的继承,是对wx.TextCtrl
和[=的多重继承20=],基本上如果在创建新的 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.: wxPython 3.0.2.0 on windows 7 64bit
找到解决方案!
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
可用于设置宽度和高度。
挺方便的。