gpt4 book ai didi

python - (Kivy Python) 实例后重置 ScreenManager 屏幕方向

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:57 26 4
gpt4 key购买 nike

我正在尝试弄清楚如何仅在按某个按钮时更改 kivy 中的屏幕方向动画(取消按钮应该像向前导航按钮一样向右删除而不是向左删除。)这是我目前正在做的事情实现这一点:

# Cancel Button
self.cancel = Button(text="Cancel", height=30, width=90,size_hint=(None, None),pos=(300, 350))
self.cancel.bind(on_release=self.BackFunction)
self.ids.float_web.add_widget(self.cancel)

def BackFunction(self, *args):
self.manager.transition.direction = 'right'
self.manager.current = ('input_sc')

我想知道如何在该动画发生后将方向重置为向左。如果我跟随屏幕变化

self.manager.transition.direction = 'left'

然后它只是使方向在 BackFunction 内向左

谢谢

最佳答案

我认为最好在每次更改current 属性时定义direction 属性。但是,您可以按照自己的意愿将函数绑定(bind)到 on_complete事件并在函数本身内解除绑定(bind):

示例:

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen


kv_text='''\
#:import SlideTransition kivy.uix.screenmanager.SlideTransition
<MyScreenManager>:
transition: SlideTransition()
FirstScreen:
LastScreen:

<FirstScreen@Screen>:
name: 'first_sc'
BoxLayout:
Button:
text: 'Next'
on_release: root.next_screen()

<LastScreen@Screen>:
name: 'last_sc'
BoxLayout:
Button:
text: 'Previous'
on_release: root.previous_screen()
'''

class MyScreenManager(ScreenManager):
pass

class FirstScreen(Screen):
def __init__(self, **kwargs):
super(FirstScreen, self).__init__(**kwargs)

def next_screen(self, *args):
self.manager.current = 'last_sc'


class LastScreen(Screen):
def __init__(self, **kwargs):
super(LastScreen, self).__init__(**kwargs)

def previous_screen(self, *args):
self.manager.transition.direction = 'right'
self.manager.current = 'first_sc'
self.manager.transition.bind(on_complete=self.restart)

def restart(self, *args):
self.manager.transition.direction = 'left'
self.manager.transition.unbind(on_complete=self.restart)


class MySubApp(App):
def build(self):
return MyScreenManager()

def main():
Builder.load_string(kv_text)
app = MySubApp()
app.run()

if __name__ == '__main__':
main()

关于python - (Kivy Python) 实例后重置 ScreenManager 屏幕方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44999040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com