I am having trouble to reload picture or profile of user. The widget that I want to reload is included in the ScreenOne, I create the function for reloading in this class and try to call it from the function in the class Change.
Thank you in advance !
Here is my main.py:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
import readtable
import Readpictureadress
import sizetable
import Match
import nbofpictures
import random
from kivy.uix.screenmanager import ScreenManager, Screen, NoTransition
from kivy.properties import ObjectProperty, NumericProperty, StringProperty
import kivy
size = sizetable.main()
Iduserp = (random.randint(1, size))
imagenb=0
picadress= Readpictureadress.main(Iduserp, 0)
class Manager(ScreenManager):
screen_one = ObjectProperty(None)
screen_two = ObjectProperty(None)
class ScreenTwo(Screen):
print('screentwo')
pass
class ScreenOne(Screen):
img = StringProperty()
global picadress
global Iduserp
def __init__(self, **kwargs):
super(ScreenOne, self).__init__(**kwargs)
self.img = picadress
def displayScreenThenLeave(self):
print('Displayscreen')
self.changeScreen()
def changeScreen(self):
print('changescreen')
if self.Manager.current == 'screen1':
self.Manager.current = 'screen2'
else:
self.Manager.current = 'screen1'
pass
def reloadprofile(self):
self.img = picadress
self.ids.a1.reload()
class Change():
global Iduserp
global imagenb
global picadress
def changeuser(self):
size = sizetable.main()
Iduserp = (random.randint(1, size))
app = App.get_running_app()
app.screenone.reloadprofile()
def changepicturenb (self):
nbofpic = nbofpictures.main(Iduserp)
if imagenb < nbofpic:
imagenb += 1
else:
imagenb = 0
app = App.get_running_app()
app.screenone.reloadprofile()
class ScreensApp(App):
print('ScreensApp')
screenone=ScreenOne()
varChange= Change()
def build(self):
m = Manager(transition=NoTransition())
return m
if __name__ == "__main__":
ScreensApp().run()
My kivy file:
#:kivy 1.8.0
<ScreenTwo>:
<ScreenOne>:
stuff_a: a1
BoxLayout:
orientation: 'vertical'
rows: 4
BoxLayout:
orientation: 'vertical'
rows: 1
size_hint_y: 0.8
AsyncImage
id:a1
source:root.img
on_touch_down: app.varChange.changepicturenb()
BoxLayout:
padding: 10,10,10,0
spacing: 10
size_hint: 1,0.3
orientation: "horizontal"
Button:
text: "Clear"
on_touch_down: app.varChange.changeuser()
Button:
text: "Remove"
Button:
text: "Group"
Button:
text: "Color"
Button:
text: "Gestures"
<Manager>:
id: screen_manager
screen_one: screen_one
screen_two: screen_two
ScreenOne:
id: screen_one
name: "screen1"
manager: screen_manager
ScreenTwo:
id: screen_two
name: "screen2"
manager: screen_manager
and my error file:
> File "main7.py", line 105, in changeuser
> app.screenone.reloadprofile() File "main7.py", line 60, in reloadprofile
> self.ids.a1.reload() File "kivy\properties.pyx", line 839, in kivy.properties.ObservableDict.__getattr__ (kivy\properties.c:12654)
> AttributeError: 'super' object has no attribute '__getattr__'