Kivy - слишком большая ошибка итерационных часов при определении всплывающего виджета - PullRequest
0 голосов
/ 26 ноября 2018

Я разрабатываю небольшую фитнес-программу и хочу добавить функциональность, при которой программа создаст всплывающее окно, спрашивающее пользователя, действительно ли он хочет выйти из системы после того, как он нажал кнопку выхода в главном меню.экран.Я попытался сделать это, установив функцию button 'on_press' для создания всплывающего виджета с кнопкой в ​​качестве содержимого (в качестве подтверждения концепции).

Однако я обнаружил, что, как только я добавил строку: "check = Popup (....)" программа начала выдавать "Clock [Critical] Слишком много итераций сделано до следующего кадра ...".

Я попытался создать свой собственный подкласс, чтобы попробоватьобойти это, но даже это не сработало.Я даже поместил всплывающий код в другой файл и попытался импортировать его, но это также не сработало (полностью).

Я прилагаю соответствующий код ниже, я написал всю программу на Pythonтолько и если бы кто-нибудь мог мне помочь, это было бы очень признательно.

(кстати, 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...