Kivy - [Critical]在绘制Ellipse时警告太多迭代

时间:2014-04-25 15:12:03

标签: user-interface graphics kivy

我最近在Kivy中创建了一个填充的Circle,当窗口重新调整为不同的宽度或高度时,它会保持圆形。我在这里看了一下这个问题:

Centering an object in Kivy

但是当我像我这样实现我的Circle时:

<BigCircle>
    width: min(self.size)
    height: min(self.size)
    pos_hint: {'center_x': .5, 'center_y': .5}
    canvas:
        Color:
            rgb: 1, 1, 0
        Ellipse:
            size: self.size
            pos: self.pos

<MainScreen>:
    FloatLayout
        size: root.size
        canvas:
            Color:
                rgb: 1, 1, 1
            Rectangle:
                size: self.size

        BigCircle:
            id: big_cir

class MainScreen(Screen):
    pass
class MyApp(App):
    def build(self):
        sm = ScreenManager(transition=NoTransition())
        sm.add_widget(MainScreen(name="Main"))
        return sm

我收到错误:

  

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

我对Clock无所作为,但我使用ScreenManager。目前,MainScreen是唯一的屏幕。如果我将高度/宽度更改为不包括min(),那么它可以正常工作,但这是保持Circle循环所必需的。否则,当重新调整大小并且看起来很糟糕时它会变长。

1 个答案:

答案 0 :(得分:2)

问题是,由于BigCircle widthheight根据size(宽度,高度)进行调整,因此无限循环。尝试将BigCircle更改为:

<BigCircle>
    canvas:
        Color:
            rgb: 1, 1, 0
        Ellipse:
            size: min(self.size), min(self.size)
            pos: root.center_x - min(self.size)/2, root.center_y - min(self.size)/2