Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from kivymd.app import MDApp
- from kivy.lang import Builder
- from kivymd.uix.screenmanager import MDScreenManager
- from kivymd.uix.screen import MDScreen
- from kivymd.uix.pickers import MDDockedDatePicker
- from kivy.properties import StringProperty
- from kivy.metrics import dp
- kv = """
- <LabelScreen@MDScreen>:
- md_bg_color: self.theme_cls.backgroundColor
- MDLabel:
- text: root.manager.date # display the date
- halign: 'center'
- MDButton:
- pos_hint: {'center_x': .5, 'bottom': 1 }
- on_release: root.manager.current = 'date screen'
- MDButtonText:
- text: "Change Screen"
- <DateScreen>:
- md_bg_color: self.theme_cls.backgroundColor
- MDTextField:
- id: field
- mode: "outlined"
- pos_hint: {'center_x': .5, 'center_y': .85}
- size_hint_x: .5
- on_focus: root.show_date_picker(self.focus)
- MDTextFieldHintText:
- text: "Docked date picker"
- MDTextFieldHelperText:
- text: "MM/DD/YYYY"
- mode: "persistent"
- MDTextFieldTrailingIcon:
- icon: "calendar"
- MDButton:
- pos_hint: {'center_x': .5, 'bottom': 1 }
- on_release: root.manager.current = 'label screen'
- MDButtonText:
- text: "Change Screen"
- MDBoxLayout:
- orientation: 'vertical'
- md_bg_color: self.theme_cls.backgroundColor
- MDLabel:
- text: 'Share data between two screens'
- size_hint_y: None
- height: dp(30)
- halign: 'center'
- SharedScreenManager:
- DateScreen:
- name: 'date screen'
- LabelScreen:
- name: 'label screen'
- """
- class SharedScreenManager(MDScreenManager):
- date = StringProperty() # create a kivy property to share between the screens
- class DateScreen(MDScreen):
- def __init__(self, **kwargs):
- super().__init__(**kwargs)
- self.date_dialog = None # used to hold the date picker
- def show_date_picker(self, focus):
- if not focus:
- return
- self.date_dialog = MDDockedDatePicker()
- # You have to control the position of the date picker dialog yourself.
- self.date_dialog.pos = [
- self.ids.field.center_x - self.date_dialog.width / 2,
- self.ids.field.y - (self.date_dialog.height + dp(32)),
- ]
- self.date_dialog.bind(on_ok=self.on_date_selected)
- self.date_dialog.bind(on_cancel=lambda x: self.date_dialog.dismiss())
- self.date_dialog.open()
- def on_date_selected(self, selected):
- date = selected.get_date()[0].strftime('%m/%d/%Y')
- self.manager.date = date
- self.ids.field.text = date
- self.date_dialog.dismiss()
- class SharedDataApp(MDApp):
- def build(self):
- self.theme_cls.primary_palette = "Olive"
- return Builder.load_string(kv)
- SharedDataApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement