Kivy:如何从TextBox中选择日历中选择日期?

时间:2018-02-08 10:54:58

标签: python python-2.7 kivy kivy-language

如何根据DatePicker使用TextInput?当textinput字段集中显示弹出窗口CalendarWidget时。选择数据后,选择的日期不会放入textinput {1}}字段。

demo.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.popup import Popup
from KivyCalendar import CalendarWidget
from kivy.core.window import Window

Window.clearcolor = (0.5, 0.5, 0.5, 1)
Window.size = (400, 250)

class SetIndex(BoxLayout):
    def __init__(self):
        super(SetIndex, self).__init__()

    def setDate(self):
        self.cal = CalendarWidget(as_popup=True)
        self.popup = Popup(title='Calendar', content=self.cal, size_hint=(1, 1))
        self.popup.open()


class Demo(App):
    def build(self):
        return SetIndex()


if __name__ == '__main__':
    Demo().run()

demo.kv

<SetIndex>:
    BoxLayout:
        orientation: "vertical"
        padding : 20, 20
        size_hint_y: .5

        BoxLayout:
            orientation: "horizontal"
            padding: 10, 10
            spacing: 10, 10
            size_hint_x: .6

            Label:
                text: "TEXT"
                text_size: self.size
                valign: 'middle'
                size_hint_x: .2

            TextInput:
                size_hint_x: .4
                id: old_date
                on_focus: root.setDate()

1 个答案:

答案 0 :(得分:1)

你使用哪个python版本?
KivyCalendar是一个用2.7 python版本编写的过时库,它根本不适用于3.6 python。
除非您愿意使用不受支持的日期库,否则我建议您寻找替代方案。

UPD: 好的,所以我找不到任何替代方案,以下是这个库的工作方式: 您需要设置一个DatePicker,它是一个textinput,具有所有必要的弹出/值处理

RPCServerConfiguration

您实际的代码只需要导入DatePicker,这就是它的全部内容

<SetIndex>:
    BoxLayout:
        orientation: "vertical"
        padding : 20, 20
        size_hint_y: .5

        DatePicker:
            pHint: 1,1
            size_hint_x: .4
            id: old_date