奇异果屏幕管理器和弹出窗口

时间:2019-04-24 12:14:22

标签: python kivy

我有一个带有屏幕管理器的奇特应用程序,其中有一个弹出窗口。弹出窗口一直起作用,直到我将带有关闭功能的按钮放入弹出窗口为止。此时,我收到消息:

PopupException: Popup can have only one widget as content

关于该主题还有另一篇文章,但似乎没有用。

python代码

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.lang import Builder
from kivy.uix.popup import Popup

class CustomPopup(Popup):
    pass

class MainScreen(Screen):
    pass

class ContentScreen(Screen):

    def open_popup(self):
        the_popup = CustomPopup()
        the_popup.open()

class ScreenManagement(ScreenManager):
    pass

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

class AMApp(App):

    def build(self):
        return presentation

if __name__ == "__main__":
    AMApp().run()

下面是kivy文件。调用custompop

时,按钮功能似乎出现了问题
#: import FadeTransition kivy.uix.screenmanager.FadeTransition

ScreenManagement:
    transition: FadeTransition()
    MainScreen:
    ContentScreen:

<CustomPopup>:
    size_hint: .5 , .5
    auto_dismiss: False
    title: "The Popup"
    Button:
        text: "Close"
        on_press: root.dismiss()

<MainScreen>:
    name: "Welcome"
    Button:
        text: "First Screen"
        size_hint: 1, .5
        font_size: 40
        pos_hint: {'center_x': 0.5, 'center_y': 0.7}
        on_release: app.root.current = "other"

    Button:
        text: 'Welcome Mr and Mrs Shaw'
        size_hint: 1, .5
        font_size: 25
        pos_hint: {'center_x': 0.5, 'center_y': 0.3}
        on_release: app.root.current = "other"

<ContentScreen>:
    name: "other"
    BoxLayout:
        orientation: "vertical"
        size_hint_x: .22
        Button:
            text: "open Popup"
            on_press: root.open_popup()

1 个答案:

答案 0 :(得分:0)

上面发布的代码在Linux Buster,Kivy 1.11.0-dev和1.10.1和Python 3.7.3rc1上运行良好

解决方案

尝试添加布局,例如将BoxLayout放入CustomPopup中以解决PopupException

示例

以下示例说明了带有消息和按钮的弹出窗口。

摘要

<CustomPopup>:
    size_hint: .5 , .5
    auto_dismiss: False
    title: "The Popup"
    BoxLayout:
        orientation: 'vertical'
        Label:
            text: "Hello Kivy"
        Button:
            text: "Close"
            on_press: root.dismiss()
相关问题