我正在为用户创建日期和时间选择选项。为此,我试图创建一个按钮,当所有微调器都选择了值时,该按钮仅会移动到下一个屏幕(单击时)。
为使程序识别何时单击了微调框(日期,小时和分钟微调框),我在.kv代码中为每个微调框指定了True
的{{1}}值。仅当所有微调器都具有state
时,屏幕管理器才会从screen_two切换到screen_three。单击微调器(并选择一个选项)时,我分配了state: True
。
除了下面显示的kv代码中的True
语句外,大多数代码都能按预期工作。
我删除了大部分代码,只保留了相关的代码段。
if
检查每个微调器的状态(通过我分配的ID标识各个微调器状态)。
<ScreenTwo>: FloatLayout: Button: background_color: 0, 0, 0, 1 size: (400, 130) size_hint: (None, None) pos_hint: {'right': 0.6, 'center_y': 0} on_press: root.hours_checking() #this function converts the 12hr time to 24hr time
if day.state == hours.state == minutes.state == AmPm.state == 'True': \
root.manager.current = 'screen_three'
Spinner:
id: day
size_hint: None, None
size: 100, 44
pos_hint: {'center': (.5, .5)}
text: 'Day'
values: 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'
on_text:
root.on_day_select(self.text) #this function sends back the selected day value in the spinner
self.state: 'True'
Spinner:
id: hours
size_hint: None, None
size: 100, 44
pos_hint: {'center': (.1, .5)}
text: 'Hour'
values: '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'
on_text:
root.on_hours_select(self.text) #this function sends back the selected hours value in the spinner
self.state: 'True'
Spinner:
id: minutes
size_hint: None, None
size: 100, 44
pos_hint: {'center': (.3, .5)}
text: 'Minutes'
values: '00', '15', '30', '45'
on_text:
root.on_minutes_select(self.text) #this function sends back the selected minutes value in the spinner
self.state: 'True'
Spinner:
id: AmPm
size_hint: None, None
size: 100, 44
pos_hint: {'center': (.4, .5)}
text: 'AM/PM'
values: 'a.m', 'p.m'
on_text:
root.on_AmPm_select(self.text) #this function sends back the selected day a.m/p.m value in the spinner
self.state: 'True'
运行此代码并单击按钮后,我将以24小时时间格式接收12小时时间。这意味着直到kv文件中的screenmanager部分(在代码块中显示,以黄色部分突出显示)之前的所有内容都可以正常运行。我是Kivy和OOP的新手,请帮助我看看我到底出了什么问题。
答案 0 :(得分:0)
您可以通过创建Spinner
的扩展名来创建自己的属性,如下所示:
class MySpinner(Spinner):
current_selection = BooleanProperty(False)
然后,将Spinner
中的kv
替换为MySpinner
,并在引用state
的{{1}}的任何地方,将其替换为{{1 }}。