我使用三个Kivy滑块来创建计时器。用户使用滑块指定小时、分钟和AM/PM。我希望对应于分钟的滑块值显示01 vs. 1,以便5:01 AM不会显示为5:1 AM。我该怎么做呢?我已经链接了GUI和代码的图片。
带有计时器值的滑块https://i.stack.imgur.com/YVDMs.png
三个滑块的代码和显示小时和分钟的标签https://i.stack.imgur.com/2suus.png
您可以扩展Slider
来创建一个类,该类具有您想要的字符串作为可以在kv
中使用的属性。下面是一个示例:
class MySlider(Slider):
val_str = StringProperty('00') # new property that contains the desired string
def on_value(self, slider, new_value):
# update val_str property
self.val_str = '{:02d}'.format(int(new_value))
然后在kv中使用新类:
MySlider:
id: monSliderM1
min: 0
max: 59
step: 1
orientation: 'horizontal'
size_hint: 0.3, 0.1
pos_hint: {'center_x': 0.5, 'top':0.95}
Label:
text: monSliderM1.val_str
size_hint: 0.3, 0.1
pos_hint: {'center_x': 0.5, 'top': 0.75}
您可以使用多个MySlider
实例,并通过简单的字符串连接组合它们的val_str
属性。下面是使用两个实例的更新后的kv
:
MySlider:
id: monSliderH1
min: 0
max: 12
step: 1
orientation: 'horizontal'
size_hint: 0.3, 0.1
pos_hint: {'center_x': 0.5, 'top':0.95}
MySlider:
id: monSliderM1
min: 0
max: 59
step: 1
orientation: 'horizontal'
size_hint: 0.3, 0.1
pos_hint: {'center_x': 0.5, 'top':0.85}
Label:
text: monSliderH1.val_str + ':' + monSliderM1.val_str
size_hint: 0.3, 0.1
pos_hint: {'center_x': 0.5, 'top': 0.75}