【问题标题】:Kivy - [Critical] Warning too much iteration, when drawing EllipseKivy - [严重] 绘制椭圆时警告过多的迭代
【发布时间】:2014-04-25 15:12:03
【问题描述】:

我最近一直在努力在 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

我得到错误:

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

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

【问题讨论】:

    标签: user-interface graphics kivy


    【解决方案1】:

    问题是由于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
    

    【讨论】:

    • 感谢您的帮助。我想我仍然有点困惑,因为我认为在画布内self.size 引用了小部件的宽度/高度数组。
    猜你喜欢
    • 1970-01-01
    • 2018-12-02
    • 2017-07-20
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多