Я уже принял ответ, но хотел бы остановиться на нем немного.@ Джон-Андерсон был прав в том, что сборщик мусора собирал экземпляры.Первоначально я делал это ...
class MainScreen(Screen):
...
@staticmethod
def upload(self):
this = UploadPopup()
...
class UploadPopup():
....
see original post
....
Чтобы решить эту проблему, мне пришлось создать экземпляр в методе init моего класса MainScreen, добавить метод open в класс UpdatePopup и вызвать этот метод, когда кнопкабыл нажат.
class MainScreen(Screen):
def __init__(self):
self.upload_popup = UploadPopup()
...
@staticmethod
def upload(self):
self.upload_popup.start()
...
class UploadPopup:
def __init__(self, short_text='heading'):
browser = FileBrowser(select_string='Select', cancel_state='down')
browser.bind(on_success=self._fbrowser_success,
on_canceled=self._fbrowser_canceled,
on_submit=self._fbrowser_submit)
self.popup = Popup(
title=short_text,
content=browser, size_hint=(0.9, 0.9),
auto_dismiss=False
)
def start(self):
self.popup.open()
....