python - 使用 kv 文件和 python 类初始化小部件之间的区别

标签 python kivy

我正在学习如何使用 Kivy 创建应用程序,我发现当我使用 Python 和 kv 语言时,应用程序看起来有所不同。

我想要做的是将背景颜色设为红色。 当我使用 Python 执行此操作时,我在左下角看到一个小红框(可能是默认的 100px kivy 小部件大小)。 当我使用 kv 文件执行此操作时,我将整个背景设为红色

这是我的 python 代码 -

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import *

class MyWidget(Widget):
    def __init__(self, **kwargs):
        super(MyWidget, self).__init__(**kwargs)
        with self.canvas:
            Color(1,0,0,1)
            Rectangle(size = self.size, pos = self.pos)


class MyWidgetApp(App):
    def build(self):
        x = MyWidget()
        return x
        pass

if __name__ == "__main__":
    MyWidgetApp().run()

这是我的kv文件

<MyWidget@Widget>:
    canvas:
        Color:
            rgba: 1, 0, 0, 1.0
        Rectangle:
            size: self.size
            pos: self.pos

为什么会这样?以及如何从 Python 设置背景颜色? 我在 Linux 机器上使用 Python 2.7

最佳答案

问题是 kv 会自动进行绑定(bind)以更新红色矩形的位置和大小,而 python 不会(也不能)。您必须使用 bind 方法来创建您自己的绑定(bind)。我有一篇关于此的博客文章 here - 巧合的是,它恰好解决了您的示例。

关于python - 使用 kv 文件和 python 类初始化小部件之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26915054/

相关文章:

python - Flask 安全性令人难以置信地减慢了所有 https 流量

python - Kivy:chow获取FloatLayout中心坐标

python - python 中用于实现 37% 规则的字典

python - 使用非唯一索引列日期在 Dask 数据框中提取最新值

python - 如何将Python变量获取到Kivy?

python - 同时运行 kivy 和无限循环

python - 导入错误 : No module named kivy

python - 当我使用屏幕管理器 : kivy. uix.screenmanager.ScreenManagerException: No Screen with name "display"时,出现此错误

Python,遍历 Excel 电子表格

python - 使用 python/mod_wsgi 的多个生产者、单个消费者