我最近一直在努力在Kivy中创建一个填充的Circle
,当窗口被重新调整为不同的宽度或高度时,它会保持一个圆形。我看了一下这里的问题:
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
圆形所必需的。否则,当重新调整尺寸时,它会变长,看起来很糟糕。
问题是,由于BigCircle
、width
和height
根据其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