Kivy 用另一个小部件的文本填充 canvas 个对象

Kivy fills canvas objects with another widget's text

我刚开始学习 Kivy(一般的移动应用程序开发),创建这个应用程序只是为了说明我最大的问题。

该应用应显示一个椭圆及其下方的标签 "there should be an ellipse above"。

main.py 文件:

#qpy:kivy
import kivy
kivy.require('1.10.0')
from kivy.app import App
from kivy.uix.widget import Widget
class Test(Widget):
    pass


class TestApp(App):
    def build(self):
        return Test()


if __name__ == '__main__':
    TestApp().run()

test.kv 文件:

#:kivy 1.10.0     
<Test>:    
    canvas:
        Ellipse:
            pos: 0, root.height / 2
            size: 500, 200
    Label:
        font_size: 80
        center_x: root.width / 2
        center_y: root.height / 4
        text: "There should be an ellipse above"

在 Ubuntu 中,这非常有效,但在 Qpython 和 Android 中,我在 phone 屏幕上看到了这个:https://drive.google.com/file/d/1lbCfbvbm96lBG1VXdEMRuEU2ApD8jA4c/view

椭圆用文本 "There should be an ellipse above" 填充并拉伸以适应 "ellipse" 的形状。如果我删除标签,"ellipse" 也会消失。每个 canvas 项都会出现同样的问题。

编辑:以非常不切实际的方式解决了这个问题。如果我创建一个只包含我想要的颜色的 .jpg 文件,将它保存在与主文件和 kv 文件相同的文件夹中,然后在 "Ellipse:" 行下方键入它,它就可以工作。不过一定有更好的解决办法吧?

source: 'white.jpg'

这看起来像是一个奇怪的错误,可能是由于绑定纹理 ID 的一些 opengl 问题引起的。

Play商店的Kivy应用有这种问题吗?你在 qpython 中只有 运行 这个吗?尝试使用 Kivy master 可能会很有趣,因为 qpython 的 Kivy 版本可能(肯定曾经)很旧。