Hej,
Mam pewien problem z wywoływaniem funkcji
go_to_second_screen
Komunikat jaki otrzymuje to: TypeError: ScreenManager.switch_to() missing 1 required positional argument: 'screen', wiem, że brakuje mu argumentu 'screen" ale dlaczego w przejściu z pierwszego ekranu do drugiego nie brakuje tego? W czym tutaj tkwi problem?
Dodam, że przechodzę od ekranu zerowego do ekranu trzeciego (każdy ekran jest osobna klasą) problem jest, jeśli chce powrócić z ekranu trzeciego do drugiego.
Klasa ekranu trzeciego + funkcja powrotu do ekranu 2 (która nie działa):
class ThirdScreen(Screen):
def __init__(self, file='', **kw):
super().__init__(**kw)
self.actual_row_in_edit = None
self.data_tables = None
self.len_of_text = None
self.lines = []
self.link = None
self.texts = []
self.modification = False
self.warning_pop = PopupWaring()
self.info_pop = PopupInfo()
self.save_as_pop = PopupSaveAS()
self.full_file_name = file
FULL_FILE_NAME = ''
SCREEN_MANAGER = None
@staticmethod
def go_to_second_screen():
from second_screen import SecondScreen
ThirdScreen.SCREEN_MANAGER.switch_to(SecondScreen(path='', file_name='',), direction='up', duration=0.5)
Klasa ekranu drugiego:
class SecondScreen(Screen):
def __init__(self, path="", file_name='', **kw):
super().__init__(**kw)
self.wait_pop = PopupWait()
self.file_name = file_name
self.path = path
SCREEN_MANAGER = None
"Budowanie" aplikacji:
class Reader(MDApp):
def build(self):
Window.size = (1920, 1040)
Window.borderless = True
Window.top = 0
Window.left = -1920
screen_manager.add_widget(ZeroScreen(name='zero', sn_manager=screen_manager))
screen_manager.add_widget(FirstScreen(name='first'))
screen_manager.add_widget(SecondScreen(name='second'))
screen_manager.add_widget(ThirdScreen(name='third'))
FirstScreen.SCREEN_MANAGER = screen_manager
SecondScreen.SCREEN_MANAGER = screen_manager
ThirdScreen.SCREEN_MANAGER = ScreenManager
return screen_manager
Klasa ekranu pierwszego + funkcja przejścia do ekranu drugiego (tutaj zawsze działa przechodzenie do ekranu drugiego)
class FirstScreen(Screen):
def __init__(self, **kw):
super().__init__(**kw)
self.pop_login = PopupLogIN()
SCREEN_MANAGER = None
@staticmethod
def open_csv(instance, ready_path="", file_name=""):
from second_screen import SecondScreen
FirstScreen.SCREEN_MANAGER.switch_to(SecondScreen(path=ready_path, file_name=file_name), direction='up',
duration=0.5)
def on_pre_enter(self, *args):
// poboczne rzeczy
for i in range(len(buttons)):
buttons[i].bind(on_press=partial(self.open_csv, ready_path=ready_path, file_name=file_name))
Wywołanie owej funkcji następuje z pliku .kv
MyButton:
id: bn_back
text: 'Powrót'
on_press: root.go_to_second_screen()