gpt4 book ai didi

python - Kivy 弹出窗口还是 Eventloop 交互?

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:12 25 4
gpt4 key购买 nike

我的应用程序的第一个屏幕有一个包含三个按钮的小菜单(在网格布局中)。两个应该打开弹出窗口。一份用于“帮助”,一份用于“关于”。第三个屏幕变为另一个屏幕。

只有一个弹出窗口有效。第一个调用(在 kivy 文件中)有效,第二个不打开弹出窗口。如果我在 cdd.kv 中切换顺序,则另一个可以工作。

摘自cdd.kv:

        CDDMainMenuLayout:

HelpButton:
size_hint: .5,.5

MetadataButton:
size_hint: .5,.5
on_release: app.root.current = 'metadata'

AboutButton:
size_hint: .5,.5

摘自main.py:

class CDDMainMenuLayout(GridLayout):
"""
Provides the layout for the three buttons on the home screen.
"""
def __init__(self, *args, **kwargs):
super(CDDMainMenuLayout, self).__init__(*args, **kwargs)
self.rows = 1
self.cols = 3
self.size_hint = (.5,.5)

...

class CDDButton(Button):
def __init__(self, **kwargs):
super(CDDButton, self).__init__(**kwargs)
self.text = _('Button')
self.background_color = colors.grey2

class AboutButton(CDDButton):
def __init__(self, **kwargs):
super(AboutButton, self).__init__(**kwargs)
self.text = _("About the CDD")
self.background_color = colors.red1
a = Popup()
a.title = _("About Constraint Definition Designer, Version - " + __version__)
a.content = RstDocument(source='about.rst')
a.size_hint_x = .8
a.size_hint_y = .8
self.bind(on_release=a.open)

class HelpButton(CDDButton):
def __init__(self, **kwargs):
super(HelpButton, self).__init__(**kwargs)
self.text = _("Help")
self.background_color = colors.green1
h = Popup()
h.title = _("CDD Help")
h.content = RstDocument(source='help.rst')
h.size_hint_x = .8
h.size_hint_y = .8
self.bind(on_release=h.open)

最佳答案

如果添加额外的行 self.popup = hself.popup = a 会有什么变化吗?一种可能性是您的弹出窗口只是被垃圾收集,因为您没有存储对它们的任何引用。我不确定这是否/如何会产生您的特定行为,但值得一试。

关于python - Kivy 弹出窗口还是 Eventloop 交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24108499/

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