我的应用的第一个屏幕有一个三个按钮的小菜单(在gridlayout中)。两个应该打开弹出窗口。一个用于帮助,一个用于关于。 第三个改为另一个屏幕。
只有一个弹出窗口有效。第一个调用(在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)
答案 0 :(得分:1)
如果添加额外的行self.popup = h
和self.popup = a
,有什么变化吗?一种可能性是你的弹出窗口只是被垃圾收集,因为你不存储对它们的任何引用。我不确定这是否会影响您的特定行为,但值得一试。