python - 自动调整自定义 kivy 小部件的大小

标签 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

非常感谢任何帮助。

最佳答案

好的,我找到了解决方案。这似乎是一个pygame问题。我现在强制 kivy 使用 SDL2,它运行得非常完美。

关于python - 自动调整自定义 kivy 小部件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33305154/

相关文章:

python - Keras LSTM input_shape : expected lstm_1_input to have shape (500, 2) 出现问题,但得到形状为 (500, 5) 的数组

python - pip 的 -H 标志是什么?

Python Kivy - 如何对多次按键使用react?

python - 将 Jupyter Notebook 连接到正在运行的 Python 应用程序

python - SDL2 错误 : "Unable to load image <default.png>" when freezing kivy application using pyinstaller

python - 虚拟环境中的kivy,窗口提供程序错误(linux)

python - 使用 Selenium Actionchains 时指定 Actions 之间的等待时间

python - 具有不同滤波器尺寸的 tensorflow 卷积

Python、 flask 、SQLAlchemy : cannot import from models

python - 在多个按钮上显示图像 - kivy