我有 Python 的基本应用知识,我正在尝试自学 kivy。我希望能够让 Python 读取数据并将数据写入 kivy 小部件。
假设有一个地址簿应用程序可以将日期和时间插入到 TextInput 中。当应用程序启动时,让 Python 获取日期和时间并将其正确插入?
此程序代码将给出一个简单的地址簿示例:
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
class AddressApp(App):
def build(self):
pass
if __name__ == '__main__':
AddressApp().run()
这是它的 address.kv 文件:
GridLayout:
cols: 2
Label:
text: 'Date'
TextInput:
id: textinputdate
Label:
text: 'Time'
TextInput:
id: textinputtime
Label:
text: 'Name'
TextInput:
id: textinputname
Label:
text: 'Address'
TextInput:
id: textinputaddress
Label:
text: 'email'
TextInput:
id: textinputemail
Label:
text: 'Phone'
TextInput:
id: textinputphone
在那之后,如果我想让 Python 读取...我不知道...呃...电话号码 TextInput,该怎么做?
最佳答案
如果您希望某些小部件具有额外的功能(例如:在应用程序启动时加载当前日期),请创建该小部件的自定义版本,以满足要求。在规则中读取小部件的值非常简单。示例:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.textinput import TextInput
from kivy.clock import Clock
import time
gui = '''
BoxLayout:
orientation: 'vertical'
GridLayout:
cols: 2
Label:
text: 'current time'
DateInput:
id: date_input
Button:
text: 'write date to console'
on_press: print(date_input.text)
'''
class DateInput(TextInput):
def __init__(self, **kwargs):
super(DateInput, self).__init__(**kwargs)
Clock.schedule_interval(self.update, 1) # update every second
def update(self, dt):
self.text = time.ctime()
class Test(App):
def build(self):
return Builder.load_string(gui)
Test().run()
关于python - 使用 python 读/写 kivy 小部件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37771303/