首页 > 解决方案 > CRITICAL] [Clock ] 警告,在下一帧之前完成了太多迭代

问题描述

我只是在学习,我试图运行这个简单的代码:我有一个问题,我们能帮帮我吗:这是我的应用程序代码:

from kivymd.app import MDApp
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import ScreenManager, Screen


Screen_helper = """
ScreenManager:
    MenuScreen:
    InscriptionScreen:
    LoginScreen:
<MenuScreen>:
    name: 'menu'
    MDRectangleFlatButton:
        text: 'Inscription'
        pos_hint: {'center_x':0.5,'center_y':0.6}
        on_press: root.manager.current = 'Inscription'
    MDRectangleFlatButton:
        text: 'Login'
        pos_hint: {'center_x':0.5,'center_y':0.5}
        on_press: root.manager.current = 'Login'

<InscriptionScreen>:
    name: 'Inscription'
    MDLabel:
        text: "Inscription"
        pos_hint: {"center_y": .85}
        font_style:"H4"
        halign : "center"
        theme_text_color : "Custom"
        text_color : 0, 0, 0, 1
    MDTextField:
        hint_text: "Enter First Name"
        icon_right:"account"
        pos_hint:{'center_x':0.5,'center_y':0.7}
        size_hint_x:None
        width:300
    MDTextField:
        hint_text: "Enter Last Name"
        icon_right : "account"
        pos_hint:{'center_x':0.5,'center_y':0.6}
        size_hint_x:None
        width:300
    MDTextField:

        hint_text: "Enter Email"
        icon_right: "mail"
        pos_hint: {'center_x': 0.5, 'center_y': 0.5}
        size_hint_x: None
        width: 300
    MDTextField:
        hint_text: "Enter Username"
        icon_right:"account-plus"
        pos_hint:{'center_x':0.5,'center_y':0.4}
        size_hint_x:None
        width:300
    MDTextField:
        hint_text: "Enter Password"
        icon_right:"lock"
        pos_hint:{'center_x':0.5,'center_y':0.3}
        size_hint_x:None
        width:300
        password: True
    MDTextField:
        hint_text: "Confirm Password"
        icon_right:"lock"
        pos_hint:{'center_x':0.5,'center_y':0.2}
        size_hint_x:None
        width:300
        password: True
    MDRaisedButton:
        text:"Valider"
        font_style:"H4"
        type: 'bottom'
        pos_hint: {'center_x':0.5,'center_y':0.08}
        size_hint_x: 0.5
    MDRectangleFlatButton:
        text: ' re'
        icon:"keyboard-return"
        pos_hint: {'center_x':0.1,'center_y':0.9}
        on_press: root.manager.current = 'menu'
        type : 'Detour'
<LoginScreen>:
    name: 'Login'
    MDLabel:
        text: "Login"
        pos_hint: {"center_y": .85}
        font_style:"H4"
        halign : "center"
        theme_text_color : "Custom"

        
    MDTextField:
        hint_text: "Username"
        icon_right:"account"
        pos_hint:{'center_x':0.5,'center_y':0.7}
        size_hint_x:None
        width:300

    MDTextField:
        hint_text: "Password"
        icon_right : "lock"
        pos_hint:{'center_x':0.5,'center_y':0.6}
        size_hint_x:None
        width:300
        password : True

    MDRaisedButton:
        text:"Log in"
        pos_hint: {'center_x':0.5,'center_y':0.4}
        size_hint_x: 0.5
    MDRectangleFlatButton:
        text: 'Back'
        pos_hint: {'center_x':0.9,'center_y':0.1}
        on_press: root.manager.current = 'menu'
      
"""


class MenuScreen(Screen):
    pass


class InscriptionScreen(Screen):
    pass


class LoginScreen(Screen):
    pass





# Create the screen manager
sm = ScreenManager()
sm.add_widget(MenuScreen(name="menu"))
sm.add_widget(InscriptionScreen(name="Inscription"))
sm.add_widget(LoginScreen(name="Login"))


class DemoApp(MDApp):

    def build(self):
        screen = Builder.load_string(Screen_helper)
        return screen


DemoApp().run()

控制台反复给出这个错误,但弹出窗口就好了:

[CRITICAL ] [Clock ] 警告,在下一帧之前完成了太多迭代。检查您的代码,或增加 Clock.max_iteration 属性

标签: pythonkivykivymd

解决方案


尝试删除评论sm后的行Create the screen manager

# Create the screen manager
sm = ScreenManager()
sm.add_widget(MenuScreen(name="menu"))
sm.add_widget(InscriptionScreen(name="Inscription"))
sm.add_widget(LoginScreen(name="Login"))

这些行正在构建一个不在任何地方使用的小部件树。实际的小部件树由以下方式构建:

screen = Builder.load_string(Screen_helper)

不确定这是否会解决您的问题,但它应该会有所帮助。

如果这不起作用,您可以按照警告提示进行操作:

from kivy.clock import Clock
Clock.max_iteration = 20

推荐阅读