Python 3.x Kivy中的SlideTransition-滑动方向失败
我在Kivy中使用SlideTransition时遇到滑动方向问题。当执行特定于按钮的滑动方向时,该方向似乎偶尔工作正常。但是,它在其他情况下失败 要重现该问题,请随意使用以下代码: main.py: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,
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