I'm trying to develop an app using kivy and Python. I'm trying to pass a variable from a python function to kivy label. Evene if I look for a solution in the past answers, there wasn't the solution for my specific problem.
This is the Python code
from kivy.app import App
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.lang import Builder
from kivy.properties import ObjectProperty
from kivy.properties import StringProperty
import pandas as pd
class Home(Screen):
pass
class Trends(Screen):
provincia = ObjectProperty()
def getdata(self):
df = pd.read_csv("https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-province/dpc-covid19-ita-province.csv")
prov = self.provincia.text
r = df['denominazione_provincia']== prov
nu = len(r)
rows = []
for check, row in zip(r, range(nu)):
if check == True:
rows.append(row)
for n in rows:
tot_casi = df.iloc[n]['totale_casi']
date_casi = df.iloc[n]['data']
casi = StringProperty(str(tot_casi))
#variable i need to pass to label
return print(casi)
pass
class Autocertificate(Screen):
pass
class News(Screen):
pass
class Main(ScreenManager):
pass
kv = Builder.load_file('my.kv')
class MyApp(App):
def build(self):
return kv
if __name__ == '__main__':
MyApp().run()
While this is my.kv:
Main:
Home:
Trends:
News:
Autocertificate
<Home>:
name: 'Home'
canvas.before:
Rectangle:
pos: 0, self.height/2
size: self.width, self.height/2
source: 'bg.png'
Rectangle:
pos: 0, 0
size: self.width, self.height/2
Color:
rgba: (1, 1, 1, 1)
GridLayout:
rows: 8
padding: [10, 10, 10, 10]
Label:
Label:
text: 'Prevenire \nè meglio \nche curare.'
font_size: 40
color: 1, 1, 1, 1
bold: True
Label:
Label:
Button:
on_release: app.root.current = "Autocertificate"
color: 0.2, 0.6, 0.9, 1
background_color: 1,1,1,0
text: 'Autocertificazioni'
font_size: 15
Button:
on_release: app.root.current = "Trends"
color: 0.2, 0.6, 0.9, 1
background_color: 1,1,1,0
text: 'Contagi'
font_size: 15
Button:
color: 0.2, 0.6, 0.9, 1
background_color: 1,1,1,0
text: 'Notizie'
font_size: 15
Button:
color: 0.2, 0.6, 0.9, 1
background_color: 1,1,1,0
text: 'Chi Contattare'
font_size: 15
<Trends>:
name: 'Trends'
provincia: prov
canvas.before:
Color:
rgba: 1, 1, 1, 1
Rectangle:
pos: self.pos
size: self.size
GridLayout:
padding: 10
rows: 9
GridLayout:
cols:3
Button:
on_release: app.root.current = "Home"
size: 60, 60
size_hint: None, None
Image:
source: 'back_white.png'
center_x: self.parent.center_x
center_y: self.parent.center_y
size_hint_y: None
height: dp(60)
Label:
text: 'Contagi'
Label
Label
TextInput:
id: prov
hint_text: 'Inserisci la tua Provincia.'
background_color: 1, 1, 1, 1
size_hint: (.2, None)
height: 30
multiline: False
background_color: 0,0,0,0.05
GridLayout:
cols:5
Label:
Label:
Button:
background_color: 0.1, 0.7, 0.9, 1
text: 'Vedi Contagi'
size_hint: None, None
size: 100, 40
pos: 200, 20
on_press: root.getdata()
#this below is the label i need to fill
Label:
Label:
Label:
Label:
Label:
Label:
Label:
<Autocertificate>:
name: 'Autocertificate'
canvas.before:
Rectangle:
pos: 0, self.height/2
size: self.width, self.height/2
source: 'bg.png'
Rectangle:
pos: 0, 0
size: self.width, self.height/2
Color:
rgba: (1, 1, 1, 1)
<News>:
name: 'News'
canvas.before:
Color:
rgba: 0.2, 0.6, 0.9, 1
Rectangle:
pos: self.pos
size: self.size
size: self.size
what is the best practice to solve this?