【问题标题】:Kivy regarding Popup Windows and ScreensKivy 关于弹出窗口和屏幕
【发布时间】:2019-11-01 18:39:21
【问题描述】:

我有一个问题,在 Kivy 中是否可以从弹出窗口切换到另一个屏幕?

【问题讨论】:

  • 答案是:“是的!”
  • 我可以知道怎么做吗?一旦用户正确输入正确的日期并按确定,我就编写了一个代码,弹出窗口将关闭并进入屏幕。但似乎我的代码不起作用。我使用 self.parent.current = 'boost_screen'(
  • 请发布您的代码的最小可重现示例。最少的代码行数显示您的问题,但不是应用程序的其余部分。如果您有一些我可以复制和粘贴然后寻找解决方案的代码,那么提供帮助会容易得多。它还表明您正在付出一些努力,而不仅仅是回复的人。谢谢。

标签: kivy screen popupwindow


【解决方案1】:

这是一种解决方案

from kivy.lang.builder import Builder
from kivy.app import App
from kivy.uix.popup import Popup

kv = """
#:import Factory kivy.factory.Factory

<ChangePopup>:
    size_hint: (None, None)
    size: (200, 200)

    Button: 
        text: "Change screen"
        on_press: app.root.current = 'screen2'; root.dismiss()

ScreenManager:
    Screen:
        BoxLayout:
            orientation: 'vertical'
            Label:
                text: "Screen1"
            Button:
                text: "Open Popup to change to Screen2"
                on_press: Factory.ChangePopup().open()
    Screen:
        name: 'screen2'
        Label:
            text: "Screen2"
"""

class ChangePopup(Popup):
    pass

sm = Builder.load_string(kv)

class NewApp(App):

    def build(self):
        return sm

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

【讨论】:

  • 感谢您的帮助。请问使用Factory打开弹出窗口和在python文件中使用Popup().open()有什么区别
  • 坦率地说。我不太确定。没有工厂它就无法工作。我认为你可能需要 Factory,因为此时 python 可能还不知道这个类。但我真的在这里猜测。如果您真的想知道,我建议将其作为另一个问题发布。如果它解决了您的问题,请接受我的回答。对我为解决这个问题所花费的时间表示感谢。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-14
相关资源
最近更新 更多