是否可以打开带有某种过渡的弹出窗口,因为我们在屏幕中有过渡

Posted

技术标签:

【中文标题】是否可以打开带有某种过渡的弹出窗口,因为我们在屏幕中有过渡【英文标题】:Is it Possible to open a popup with some kind of transition as we have transition in Screen 【发布时间】:2014-06-06 13:13:43 【问题描述】:

我们可以在打开 Popup 时添加任何过渡吗?例如,当打开 Screen 我们可以有 过渡 = FallOutTransition() 。在弹出窗口的情况下是否可以这样做。

如果不是: 我正在考虑创建一个自定义弹出窗口,我可以在其中使用屏幕类并对其进行转换,但我无法弄清楚。有人知道吗?请参阅下面的示例代码:

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen,FallOutTransition
from kivy.clock import Clock
from kivy.core.window import Window
from kivy.uix.popup import Popup
from kivy.uix.label import Label


class CPopup(Screen,Popup):
    def __init__(self, **kwargs):
        super(CPopup, self).__init__(**kwargs)
        self.transition= FallOutTransition()
        #self.title = "i am popup ... lol"

class A(Screen):
    def __init__(self, **kwargs):
        super(A, self).__init__(**kwargs)
        self.transition= FallOutTransition()
        self.add_widget(Label(text="I am label on the main Widget !"))
        popup = Popup(title="hello i am a simple Popup",content=Label(text="i am popup content"),size_hint=(None, None), size=(Window.height, Window.width/4))
        popup.open()
        popup.bind(on_open=self.on_open)

    def on_open(self,instance):
        print "hi popup was opened"
        Clock.schedule_once(instance.dismiss,2)


# App Class
class MyJBApp(App):
    def build(self):
        sm = ScreenManager(transition= FallOutTransition())
        sm.add_widget(A(name='A'))
        return sm

if __name__ == '__main__':
    MyJBApp().run()

【问题讨论】:

【参考方案1】:

例如,当打开 Screen 时,我们可以有 transition = FallOutTransition()

这是由 ScreenManager 完成的,而不是 Screen。

如果不是:我正在考虑创建一个自定义弹出窗口,我可以在其中使用屏幕类并对其进行转换,但我无法弄清楚。

除非您以某种方式使用 ScreenManager,否则这将不起作用。

您提到的 FallOutTransition 实际上使用了着色器效果,如果您不知道自己在做什么,则很难在屏幕管理器之外复制它(不难,但也没有真正记录太多)。

但是,您可以使用普通的 kivy 动画获得几乎相同的效果。你会开始弹出比你真正想要的略小的弹出窗口,并且不透明度为 0,然后将其大小设置为你真正想要的并将其不透明度设置为 1。

【讨论】:

以上是关于是否可以打开带有某种过渡的弹出窗口,因为我们在屏幕中有过渡的主要内容,如果未能解决你的问题,请参考以下文章

kivy:带有进度条的弹出窗口

强制关闭报文“打开此链接?”的弹出窗口]]

Sencha touch 中类似 iPad 的弹出窗口

JavaScript中的弹出窗口

Angular - 是否可以创建AppComponent的弹出窗口?

如何旋转 GamesClient 的弹出窗口