Python 3.x Kivy中的SlideTransition-滑动方向失败

Python 3.x Kivy中的SlideTransition-滑动方向失败,python-3.x,kivy,kivy-language,Python 3.x,Kivy,Kivy Language,我在Kivy中使用SlideTransition时遇到滑动方向问题。当执行特定于按钮的滑动方向时,该方向似乎偶尔工作正常。但是,它在其他情况下失败 要重现该问题,请随意使用以下代码: main.py: from kivy.app import App # Use of fields and methods of Kivy from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, Screen,

我在Kivy中使用SlideTransition时遇到滑动方向问题。当执行特定于按钮的滑动方向时,该方向似乎偶尔工作正常。但是,它在其他情况下失败

要重现该问题,请随意使用以下代码:

main.py:

from kivy.app import App # Use of fields and methods of Kivy
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition

class Screen1(Screen):
    pass

class Screen2(Screen):
    pass

class Screen3(Screen):
    pass

class ScreenManagement(ScreenManager):
    pass

presentation = Builder.load_file("style.kv")

class MyApp(App):
    def build(self):
        return presentation

myApp = MyApp()
myApp.run()
1.5千伏:

#: import SlideTransition kivy.uix.screenmanager.SlideTransition

ScreenManagement:
    transition: SlideTransition()
    Screen1:
    Screen2:
    Screen3:

<Screen1>:
    name: "screen1"
    FloatLayout:
        Label:
            text: "Screen 1"
            pos_hint: {"top": 1.0}
        Button:
            on_release: 
                app.root.current = "screen2"
                app.root.transition = SlideTransition(direction="left")
            size_hint: 0.5, 0.8/3
            pos_hint: {"bottom": 0.8, "left": 1}
            text: "Screen 2 (slide left)"
            font_size: 30

<Screen2>:
    name: "screen2"

    FloatLayout:
        Label:
            text: "Screen 2"
            pos_hint: {"top": 1.0}

        Button:
            on_release: 
                app.root.current = "screen1"
                app.root.transition = SlideTransition(direction="right")
            size_hint: 0.5, 0.8/3
            pos_hint: {"top": 0.8, "right": 1}
            text: "Screen 1 (slide right)"
            font_size: 30

        Button:
            on_release:
                app.root.current = "screen3"
                app.root.transition = SlideTransition(direction="left")
            size_hint: 0.5, 0.8/3
            pos_hint: {"top": 0.8, "left": 1}
            text: "Screen 3 (slide left)"
            font_size: 30

<Screen3>:
    name: "screen3"

    FloatLayout:
        Label:
            text: "Screen 3"
            pos_hint: {"top": 1.0}
        Button:
            on_release: 
                app.root.current = "screen1"
                app.root.transition = SlideTransition(direction="right")
            size_hint: 0.5, 0.8/3
            pos_hint: {"top": 0.8, "left": 1}
            text: "Screen 1 (slide right)"
            font_size: 30
#:导入SlideTransition kivy.uix.screenmanager.SlideTransition
屏幕管理:
转换:SlideTransition()
屏幕1:
屏幕2:
屏幕3:
:
名称:“屏幕1”
浮动布局:
标签:
文本:“屏幕1”
pos_提示:{“top”:1.0}
按钮:
发布时:
app.root.current=“屏幕2”
app.root.transition=SlideTransition(direction=“left”)
尺寸提示:0.5,0.8/3
pos_提示:{“bottom”:0.8,“left”:1}
文本:“屏幕2(幻灯片左侧)”
字体大小:30
:
名称:“屏幕2”
浮动布局:
标签:
文本:“屏幕2”
pos_提示:{“top”:1.0}
按钮:
发布时:
app.root.current=“屏幕1”
app.root.transition=SlideTransition(direction=“right”)
尺寸提示:0.5,0.8/3
pos_提示:{“top”:0.8,“right”:1}
文本:“屏幕1(向右滑动)”
字体大小:30
按钮:
发布时:
app.root.current=“屏幕3”
app.root.transition=SlideTransition(direction=“left”)
尺寸提示:0.5,0.8/3
pos_提示:{“top”:0.8,“left”:1}
文本:“屏幕3(幻灯片左侧)”
字体大小:30
:
名称:“屏幕3”
浮动布局:
标签:
文本:“屏幕3”
pos_提示:{“top”:1.0}
按钮:
发布时:
app.root.current=“屏幕1”
app.root.transition=SlideTransition(direction=“right”)
尺寸提示:0.5,0.8/3
pos_提示:{“top”:0.8,“left”:1}
文本:“屏幕1(向右滑动)”
字体大小:30
我遇到了以下问题:当单击第一张幻灯片中的“幻灯片2”和第二张幻灯片中的“幻灯片3”时,这两张幻灯片都按规定向左消失,第三张幻灯片中的“幻灯片1”会导致幻灯片方向为“左”,尽管指定的方向为“右”。似乎有什么东西覆盖了滑动方向

有没有人遇到过类似的问题,并且知道如何解决?提前谢谢

问题 屏幕显示在给定方向之前。因此,它使用了上一个滑动过渡方向,即左侧。你在几个地方也有同样的问题

Button:
    on_release: 
        app.root.current = "screen1"
        app.root.transition = SlideTransition(direction="right")
解决方案 首先设置幻灯片过渡方向,然后将当前设置为所需的屏幕名称。有关详细信息,请参考示例

Button:
    on_release:
        app.root.transition = SlideTransition(direction="right")
        app.root.current = "screen1"
例子 1.5千伏
#:导入SlideTransition kivy.uix.screenmanager.SlideTransition
屏幕管理:
转换:SlideTransition()
屏幕1:
屏幕2:
屏幕3:
:
名称:“屏幕1”
浮动布局:
标签:
文本:“屏幕1”
pos_提示:{“top”:1.0}
按钮:
发布时:
app.root.transition=SlideTransition(direction=“left”)
app.root.current=“屏幕2”
尺寸提示:0.5,0.8/3
pos_提示:{“bottom”:0.8,“left”:1}
文本:“屏幕2(幻灯片左侧)”
字体大小:30
:
名称:“屏幕2”
浮动布局:
标签:
文本:“屏幕2”
pos_提示:{“top”:1.0}
按钮:
发布时:
app.root.transition=SlideTransition(direction=“right”)
app.root.current=“屏幕1”
尺寸提示:0.5,0.8/3
pos_提示:{“top”:0.8,“right”:1}
文本:“屏幕1(向右滑动)”
字体大小:30
按钮:
发布时:
app.root.transition=SlideTransition(direction=“left”)
app.root.current=“屏幕3”
尺寸提示:0.5,0.8/3
pos_提示:{“top”:0.8,“left”:1}
文本:“屏幕3(幻灯片左侧)”
字体大小:30
:
名称:“屏幕3”
浮动布局:
标签:
文本:“屏幕3”
pos_提示:{“top”:1.0}
按钮:
发布时:
app.root.transition=SlideTransition(direction=“right”)
app.root.current=“屏幕1”
尺寸提示:0.5,0.8/3
pos_提示:{“top”:0.8,“left”:1}
文本:“屏幕1(向右滑动)”
字体大小:30

我明白了!谢谢你的回答,我的坏朋友!
#:import SlideTransition kivy.uix.screenmanager.SlideTransition

ScreenManagement:
    transition: SlideTransition()
    Screen1:
    Screen2:
    Screen3:

<Screen1>:
    name: "screen1"
    FloatLayout:
        Label:
            text: "Screen 1"
            pos_hint: {"top": 1.0}
        Button:
            on_release:
                app.root.transition = SlideTransition(direction="left")
                app.root.current = "screen2"
            size_hint: 0.5, 0.8/3
            pos_hint: {"bottom": 0.8, "left": 1}
            text: "Screen 2 (slide left)"
            font_size: 30

<Screen2>:
    name: "screen2"

    FloatLayout:
        Label:
            text: "Screen 2"
            pos_hint: {"top": 1.0}

        Button:
            on_release:
                app.root.transition = SlideTransition(direction="right")
                app.root.current = "screen1"
            size_hint: 0.5, 0.8/3
            pos_hint: {"top": 0.8, "right": 1}
            text: "Screen 1 (slide right)"
            font_size: 30

        Button:
            on_release:
                app.root.transition = SlideTransition(direction="left")
                app.root.current = "screen3"
            size_hint: 0.5, 0.8/3
            pos_hint: {"top": 0.8, "left": 1}
            text: "Screen 3 (slide left)"
            font_size: 30

<Screen3>:
    name: "screen3"

    FloatLayout:
        Label:
            text: "Screen 3"
            pos_hint: {"top": 1.0}
        Button:
            on_release:
                app.root.transition = SlideTransition(direction="right")
                app.root.current = "screen1"
            size_hint: 0.5, 0.8/3
            pos_hint: {"top": 0.8, "left": 1}
            text: "Screen 1 (slide right)"
            font_size: 30