自动调整自定义kivy小部件

时间:2015-10-23 14:42:35

标签: python kivy

我刚刚发现了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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

好的,我找到了解决方案。这似乎是一个pygame问题。我现在强迫kivy使用SDL2并且它完美无缺。