Как изменить содержимое методов в новом классе - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь изменить направление перехода изменения экрана с помощью прокрутки, но мне не удалось этого добиться. Экран меняется, но я хочу, чтобы направление изменения было другим. Как мне это сделать?

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.uix.button import ButtonBehavior
from kivy.uix.image import Image
from kivy.uix.label import Label
from kivy.uix.carousel import Carousel
from kivy.uix.widget import Widget
from kivy.uix.popup import Popup


class HomeScreen(Screen):
    def on_touch_move(self, touch):
        if touch.x < touch.ox:
            MainApp.get_running_app().change_screen(screen_name="swipedhikr_screen")
                #MainApp.get_running_app().screen_manager.transition.direction = "left" ----> also didn't work

class MainApp(App):
    def build(self):
        return GUI

    def change_screen(self, screen_name):
        # get the screen manager from the kv file
        screen_manager = self.root.ids["screen_manager"]
        screen_manager.transition.direction = "up"  # I also tried screen_direction = screen_manager.transition.direction
        # screen_direction = "up"
        screen_manager.current = screen_name

    def quit_app(self):
        MainApp().stop()


MainApp().run()

Я попытался сделать screen_manager.transition.direction переменной, а затем установить для этой переменной значение «вверх», чтобы я мог получить доступ к этой переменной и управлять ею в моем class HomeScreen(Screen), но это тоже не работает.

Ответы [ 2 ]

0 голосов
/ 22 июня 2020

Он работает, когда я передаю направление в качестве параметра, поэтому оно становится

def change_screen(self, screen_name, screen_direction):
        # get the screen manager from the kv file
        screen_manager = self.root.ids["screen_manager"]  
        screen_manager.current = screen_name
        screen_manager.transition.direction = screen_direction
0 голосов
/ 20 июня 2020

Не уверен, но думаю, вы можете использовать switch_to():

    def change_screen(self, screen_name):
        screen_manager.switch_to(screen_name, direction='up')

См. Документацию: https://kivy.org/doc/stable/api-kivy.uix.screenmanager.html#kivy .uix.screenmanager.ScreenManager.switch_to

...