I'm beginner in kivy module. I want to put 8 textboxes in screen to get input from user and then, save this inputs in a list in order to use them later!
I searched in the internet but a didn't find any thing useful.
I think I should do sth like this code: Save text input to a variable in a kivy app
But don't want to show the inputs in shell
, I wanna save them in a list!
You need to give your text inputs id
s, then reference the id
of them and get their text using .text
. self.root
in the TestApp class refers to the root widget of your kv file, which is the one that doesn't have brackets ( < >
) around it, in this case the GridLayout
.
main.py
from kivy.app import App
class MainApp(App):
def get_text_inputs(self):
my_list = [self.root.ids.first_input_id.text, self.root.ids.second_input_id.text]
print(my_list)
pass
MainApp().run()
main.kv
GridLayout:
cols: 1
TextInput:
id: first_input_id
TextInput:
id: second_input_id
Button:
text: "Get the inputs"
on_release:
app.get_text_inputs()
TextInput
. for child in reversed(self.container.children):
if isinstance(child, TextInput):
self.data_list.append(child.text)
GridLayout
id
for the container Label
and TextInput
widgets as child of GridLayout GridLayout:
id: container
cols: 2
Label:
text: "Last Name:"
TextInput:
id: last_name
from kivy.app import App
from kivy.uix.screenmanager import Screen
from kivy.uix.textinput import TextInput
from kivy.properties import ObjectProperty, ListProperty
from kivy.lang import Builder
Builder.load_file('main.kv')
class MyScreen(Screen):
container = ObjectProperty(None)
data_list = ListProperty([])
def save_data(self):
for child in reversed(self.container.children):
if isinstance(child, TextInput):
self.data_list.append(child.text)
print(self.data_list)
class TestApp(App):
def build(self):
return MyScreen()
if __name__ == "__main__":
TestApp().run()
#:kivy 1.11.0
<MyScreen>:
container: container
BoxLayout:
orientation: 'vertical'
GridLayout:
id: container
cols: 2
row_force_default: True
row_default_height: 30
col_force_default: True
col_default_width: dp(100)
Label:
text: "Last Name:"
TextInput:
id: last_name
Label:
text: "First Name:"
TextInput:
id: first_name
Label:
text: "Age:"
TextInput:
id: age
Label:
text: "City:"
TextInput:
id: city
Label:
text: "Country:"
TextInput:
id: country
Button:
text: "Save Data"
size_hint_y: None
height: '48dp'
on_release: root.save_data()
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.