我刚刚发现了kivy,并决定尝试作为我下一个软件项目的GUI框架。我完成了教程,现在想创建自己的小部件。但是,我在使小部件正确调整大小时遇到了一些麻烦。这是一个最小(非)工作的例子:
import kivy
kivy.require('1.9.0')
from kivy.app import App
from kivy.uix.layout import Layout
from kivy.graphics import Color, Rectangle
class TestWidget(Layout):
def __init__(self, **kwargs):
super(TestWidget, self).__init__(**kwargs)
with self.canvas:
Color(1, 1, 1)
self.rect = Rectangle(pos=(0,0), size=(1,1))
self.bind(pos=self.update)
self.bind(size=self.update)
def update(self, *args):
self.rect.pos = self.pos
self.rect.size = self.size
class TestApp(App):
def build(self):
return TestWidget()
if __name__ == '__main__':
TestApp().run()
我希望这会显示一个白色窗口,其中白色矩形随窗口调整大小。但是,只有在启动时才能正确设置大小,并且永远不会再调用update
方法。我做错了什么?
我在StackOverflow上找到了工作示例,但他们都使用了我想避免使用的kv语言(必须有一种方法可以让它在没有kv语言的情况下工作......)。
编辑:我在Linux上运行kivy 1.9.0,pygame 1.9.2a0和Python 3.4.1
非常感谢任何帮助。
答案 0 :(得分:1)
好的,我找到了解决方案。这似乎是一个pygame问题。我现在强迫kivy使用SDL2并且它完美无缺。