Как сказал @eyllanesc: приведите минимальный, полный и проверяемый пример. Нам нужно гораздо больше работы, чтобы выяснить, в чем ваша проблема, если мы сначала просто отладим ваш код, чтобы добраться до точки, где мы можем увидеть вашу проблему. Но так как я в настроении играть с Kivy
:
У вас есть несколько проблем. Сначала измените ScreensApp
class ScreensApp(App):
def build(self):
self.varChange = Change()
self.m = Manager(transition=NoTransition())
return self.m
Обратите внимание, что ваше создание ScreenOne
исключено, поскольку оно создается вашим правилом <Manager>
в файле kv
. Другие операторы перемещаются в метод build
и сохраняются как переменные экземпляра, так как они нужны вам в другом месте. Это также позволяет работать с вашей ссылкой на app.varChange
в вашем файле kv
.
Также вам нужно изменить класс Change
:
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.m.screen_one.reloadprofile()
def changepicturenb (self):
nbofpic = nbofpictures.main(Iduserp)
if imagenb < nbofpic:
imagenb += 1
else:
imagenb = 0
app = App.get_running_app()
app.m.screen_one.reloadprofile()
Ссылка на ScreenOne
сохраняется в вашем правиле <Manager>
в файле kv
как screen_one
, поэтому для доступа к нему вы можете перейти через app
к m
(Manager
). ) ссылка, которая была сохранена в методе build
, а затем в свойство screen_one
, также определенное в правиле <Manager>
. Я думаю, что это может решить вашу проблему, но я не могу быть уверенным, так как мне пришлось внести изменения в пример, чтобы привести его к «проблеме».