I am sorry if some parts are in my language hopefully it doesn't matter
When I press the 'Add' button to add another 3 textinputs like those up the 'Add' button and I want to save the input that is put on those textinput boxes but I think I can figure that myself.
I searched but couldn't find something useful. Also this is my first time creating something in this level so sorry if it is inefficient in some ways.
This is the py
file:
from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.properties import ObjectProperty
class MyGrid(GridLayout) :
id_1 = ObjectProperty(None)
id_2 = ObjectProperty(None)
id_3 = ObjectProperty(None)
id_4 = ObjectProperty(None)
id_10 =ObjectProperty(None)
def perfundo (self) :
file = open('F:\\F\\F\\' + self.id_1.text + '-' + str(date.today()) + '.txt', 'x')
file.write('Emri dhe mbiemri :' + self.id_1.text + '\n' + 'Lloji i vetures :' + self.id_2.text + '\n' + 'Nr. i telefonit :' + self.id_3.text + '\n' + 'Problemi :' + self.id_4.text)
file.close()
def add(self):
self.id_10.text
class HAZApp(App) :
def build (self) :
return MyGrid()
app = HAZApp()
app.run()
and this is the kv file
<MyGrid>
id: HAZ
id_1: emridhembiemri
id_2:llojiivetures
id_3:numriitelefonit
id_4:problemi
id_10:add
rows: 10
padding: 10
spacing: 10
canvas.before:
Rectangle:
pos: self.pos
size: self.size
source: 'photo.jpg'
BoxLayout:
canvas.before:
Color:
rgba: 0.4,0.5,0.8,1
Rectangle:
size: self.size
pos: self.pos
Label:
font_size: '40sp'
outline_color: 0, 0, 0
outline_width: 2
text: 'Auto Servis "Haziri"'
BoxLayout:
spacing:10
Label:
text:"Name"
font_size: 20
color:0.4,0.5,0.8,1
Label:
text:"Type of car"
font_size: 20
color:0.4,0.5,0.8,1
Label:
text:"Phone number"
font_size: 20
color:0.4,0.5,0.8,1
Label:
text:"Problem"
font_size: 20
color:0.4,0.5,0.8,1
BoxLayout:
spacing:20
TextInput:
font_size: 20
id:emridhembiemri
TextInput:
font_size: 20
id:llojiivetures
TextInput:
font_size: 20
id:numriitelefonit
TextInput:
font_size: 20
id:problemi
BoxLayout:
spacing: 20
column:2
Label:
text:'Parts'
font_size: 20
color:0.4,0.5,0.8,1
BoxLayout:
Label:
text:'price for parts'
font_size: 20
color:0.4,0.5,0.8,1
Label:
text:'price for work'
font_size: 20
color:0.4,0.5,0.8,1
BoxLayout:
spacing: 20
column:2
TextInput:
BoxLayout:
TextInput:
TextInput:
BoxLayout:
Button:
id:add
text:'Add'
on_press:root.add()
BoxLayout:
column:4
Label:
text:''
Label:
text:''
Label:
text:''
Label:
text:'Total'
BoxLayout:
column:4
Label:
text:''
Label:
text:''
Label:
text:''
Button:
text:'total'
BoxLayout:
Label:
text:''
Button:
text:'Finish'
font_size: 20
on_press:root.perfundo()
on_press: app.stop()
Label:
text:''
I recommend using a ScrollView
to contain the TextInputs
. Your add()
method can be:
def add(self):
# Add a new PartsTextInputs inside the ScrollView
self.ids.parts_text_inputs.add_widget(Factory.PartsTextInputs())
Then add a rule for the PartsTextInputs
in the kv
as well as a ScrollView
to contain them. Here is what a modified kv
would look like:
<PartsTextInputs@BoxLayout>: # this is a rule for building the parts TextInputs
size_hint_y: None
height: self.minimum_height
spacing: 20
TextInput:
size_hint_y: None
height: 48
BoxLayout:
size_hint_y: None
height: self.minimum_height
TextInput:
size_hint_y: None
height: 48
TextInput:
size_hint_y: None
height: 48
<MyGrid>
id: HAZ
id_1: emridhembiemri
id_2:llojiivetures
id_3:numriitelefonit
id_4:problemi
id_10:add
# rows: 10
cols: 1
padding: 10
spacing: 10
canvas.before:
Rectangle:
pos: self.pos
size: self.size
source: 'photo.jpg'
BoxLayout:
canvas.before:
Color:
rgba: 0.4,0.5,0.8,1
Rectangle:
size: self.size
pos: self.pos
Label:
font_size: '40sp'
outline_color: 0, 0, 0
outline_width: 2
text: 'Auto Servis "Haziri"'
BoxLayout:
spacing:10
Label:
text:"Name"
font_size: 20
color:0.4,0.5,0.8,1
Label:
text:"Type of car"
font_size: 20
color:0.4,0.5,0.8,1
Label:
text:"Phone number"
font_size: 20
color:0.4,0.5,0.8,1
Label:
text:"Problem"
font_size: 20
color:0.4,0.5,0.8,1
BoxLayout:
spacing:20
TextInput:
font_size: 20
id:emridhembiemri
TextInput:
font_size: 20
id:llojiivetures
TextInput:
font_size: 20
id:numriitelefonit
TextInput:
font_size: 20
id:problemi
BoxLayout:
spacing: 20
column:2
Label:
text:'Parts'
font_size: 20
color:0.4,0.5,0.8,1
BoxLayout:
Label:
text:'price for parts'
font_size: 20
color:0.4,0.5,0.8,1
Label:
text:'price for work'
font_size: 20
color:0.4,0.5,0.8,1
ScrollView:
size_hint_y: 3 # Since this is part of a GridLayout space is assigned by size_hint ratios
BoxLayout:
id: parts_text_inputs # this will contain all the parts TextInputs
orientation: 'vertical'
size_hint_y: None
height: self.minimum_height
PartsTextInputs: # this is the first of the parts TextInputs
BoxLayout:
Button:
id:add
text:'Add'
on_press:root.add()
BoxLayout:
column:4
Label:
text:''
Label:
text:''
Label:
text:''
Label:
text:'Total'
BoxLayout:
column:4
Label:
text:''
Label:
text:''
Label:
text:''
Button:
text:'total'
BoxLayout:
Label:
text:''
Button:
text:'Finish'
font_size: 20
on_press:root.perfundo()
on_press: app.stop()
Label:
text:''