Kivy使用篇之记事本小程序
os.path
中exists
join
@property
的使用Property
使用ScreenManager
Screen
SlideTransition
使用RecycleView
的使用
根据kivy示例程序,编写一个可以运行在Android的记事本小程序。
可变的文本输入框
当双击时,文本框获取焦点,且可输入内容。失去焦点时,采用标签显示输入的文本。
源码如下:
class MutableTextInput(FloatLayout):
"""可变文本输入框"""
text = StringProperty()
multiline = BooleanProperty(True)
def __init__(self, **kwargs):
"""初始化"""
super(MutableTextInput, self).__init__(**kwargs)
Clock.schedule_once(self.prepare, 0)
def prepare(self, *args):
"""设置显示和输入"""
self.w_textinput = self.ids.w_textinput.__self__
self.w_label = self.ids.w_label.__self__
self.view()
def on_touch_down(self, touch):
"""双击标签编辑"""
if self.collide_point(*touch.pos) and touch.is_double_tap:
self.edit()
return super(MutableTextInput, self).on_touch_down(touch)
def edit(self):
"""编辑内容"""
self.clear_widgets()
self.add_widget(self.w_textinput)
self.w_textinput.focus = True
def view(self):
self.clear_widgets()
if not self.text:
self.w_label.text = "Double tap/click to edit"
self.add_widget(self.w_label)
def check_focus_and_view(self, textinput):
"""当输入框失去焦点时显示内容"""
if not textinput.focus:
self.text = textinput.text
self.view()
初始时,设置输入框和显示框。
Clock.schedule_once(self.prepare, 0)
def prepare(self, *args):
"""设置显示和输入"""
self.w_textinput = self.ids.w_textinput.__self__
self.w_label = self.ids.w_label.__self__
self.view()
def on_touch_down(self, touch):
当双击控件时,进入编辑状态。