【发布时间】:2020-05-08 08:21:40
【问题描述】:
我正在尝试将 kivymd 日期选择器上的不可用日期灰显(如果更容易的话,我很乐意使用 Kivy 日历)并使它不会让用户单击灰显的日期,或者它只会显示一个弹出窗口说这个日期不可用。
我知道如何检查日期是否无法选择,我可以对照包含不可用日期的列表检查所选日期,如果选择在列表中,我可以弹出一个弹出窗口,但我不确定如何做设计方面 - 当用户打开日历时将不可用的日期显示为灰色。
from kivy.lang import Builder
from kivy.factory import Factory
from kivy.properties import ObjectProperty
from kivymd.app import MDApp
from kivymd.uix.picker import MDDatePicker
kv = """
<Pickers@Screen>
name: "pickers"
BoxLayout:
orientation: "vertical"
spacing: dp(20)
pos_hint: {"center_x": .5, "center_y": .5}
size_hint_y: None
height: self.minimum_height
MDRaisedButton:
text: "Open date picker"
pos_hint: {"center_x": .5}
opposite_colors: True
on_release: app.show_example_date_picker()
MDLabel:
id: date_picker_label
theme_text_color: "Primary"
halign: "center"
BoxLayout:
size_hint: None, None
size: self.minimum_size
pos_hint: {"center_x": .5}
Label:
theme_text_color: "Primary"
text: "Start on previous date"
size_hint_x: None
width: self.texture_size[0]
color: 0, 0, 0, 1
MDCheckbox:
id: date_picker_use_previous_date
size_hint: None, None
size: dp(48), dp(48)
"""
class MainApp(MDApp):
previous_date = ObjectProperty()
def __init__(self, **kwargs):
self.title = "KivyMD Examples - Date Picker"
super().__init__(**kwargs)
def build(self):
Builder.load_string(kv)
self.root = Factory.Pickers()
def show_example_date_picker(self, *args):
if self.root.ids.date_picker_use_previous_date.active:
pd = self.previous_date
try:
MDDatePicker(self.set_previous_date,
pd.year, pd.month, pd.day).open()
except AttributeError:
MDDatePicker(self.set_previous_date).open()
else:
MDDatePicker(self.set_previous_date).open()
def set_previous_date(self, date_obj):
self.previous_date = date_obj
self.root.ids.date_picker_label.text = str(date_obj)
if __name__ == "__main__":
MainApp().run()
【问题讨论】:
-
您解决了这个问题吗?我也想知道怎么做
标签: python kivy kivy-language