我正在设计一个小型健身程序,我想添加一些功能,该程序将在其中创建一个弹出窗口,询问用户在按下主菜单上的退出按钮后是否真的要退出该对话框屏幕。 我试图通过设置按钮“ on_press”功能来创建此弹出窗口小部件,以按钮作为内容(作为概念证明)。
但是,我发现我在添加以下行后立即发现:“ check = Popup(....)” 该程序开始抛出“ Clock [Critical]在下一帧之前完成太多迭代...”。
我试图创建自己的子类来尝试规避此问题,但即使这样也没有用。我什至将弹出式代码放在另一个文件中,并尝试导入该文件,但这也不(完全)起作用。
我在下面附上相关代码,我只用Python编写了整个程序,如果有人可以帮助我,将不胜感激。
(btw RedirectButton只是一个带有按钮的类,使它能够切换当前屏幕)
class MenuPopup(Popup):
def __init__(self,**kwargs):
super(MenuPopup, self).__init__(**kwargs)
self.size_hint = (0.5,0.5)
self.title = 'Are you sure you want to sign out?'
butt2=Button(text= 'No',on_press = self.dismiss)
class MenuScreen(Screen):
def signout(self,instance):
check = MenuPopup()
check.open()
def __init__(self, **kwargs):
super(MenuScreen, self).__init__(**kwargs)
layout = FloatLayout()
sign= RedirectButton(text= 'Sign Out',target='login', direction = 'down'
sign.size_hint = (0.4,0.3)
sign.pos_hint={"center_x":0.73,"center_y":0.3}
sign.bind(on_release= self.signout)
layout.add_widget(sign)
self.add_widget(layout)
class MyApp(App):
title = "Fitness Program"
Window.clearcolor = get_color_from_hex('FFFFFF')
def build(self):
sm = ScreenManager(transition=SlideTransition())
sm.add_widget(LoginScreen(name='login'))
sm.add_widget(MenuScreen(name='menu'))
return sm
if __name__ == "__main__":
MyApp().run()