如何更改不同屏幕中的屏幕转换

How to change screen transition in different screens

我有两个屏幕。当我按下 'next screen' 按钮时,它将转到第二个屏幕,过渡应该是 SlideTransition(左),当我按下 'back' 按钮时,它应该回到第一个屏幕,过渡应该是SlideTransition(右)。

怎么做?它只在我的代码中使用 1 个转换

这是我的代码py/kv代码:

class 1stScreen(Screen):
    ...some methods...

class 2ndScreen(Screen):
    ...some methods...

class MyScreenManager(ScreenManager):
    pass

root_widget = Builder.load_string('''
#:import SlideTransition kivy.uix.screenmanager.SlideTransition

MyScreenManager:
    transition: SlideTransition(direction='left')
    1stScreen:

    transition: SlideTransition(direction='right') #<-- Im getting error with this
    2ndScreen:

<1stScreen>:
     name: '1stScreen'
     ...some widgets...
     Button:
         text: 'next screen'
         on_release: app.root.current = '2ndScreen'

<2ndScreen>:
     name: '2ndScreen'
     ...some widgets...
     Button:
         text: 'back'
         on_release: app.root.current = '1stScreen'
''')

class Main(App):
    def build(self):
        return root_widget

if __name__ == "__main__":
    Main().run()

将转换放入 on_release 事件中。

Button:
    text: 'next screen'
    on_release:
        app.root.transition = SlideTransition(direction='right')
        app.root.current = '2ndScreen'
...

对于来到这里寻找答案以使用从一个屏幕到另一个屏幕的完全不同的过渡的其他人来说,这对我有用:

  1. 在 KV 文件的顶部使用如下行(包括哈希)加载所需的转换:
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
#: import SlideTransition kivy.uix.screenmanager.SlideTransition
  1. 试用此格式,将过渡类型更改为所需类型:
app.root.transition = FadeTransition(duration=1.2)

让它与你的触发事件保持联系。我试过了

on_release

用于我的登录和注销按钮,但发现它有问题并且不完全是我想要的行为。我最后为

添加了一行
on_press

以便在没有意外行为的情况下创建所需的转换。我将更改屏幕的实际行保留在

on_release

行。