首页 > 解决方案 > 使用画布绘制 kivy 矩形时出错

问题描述

我需要一些关于 kivy 的帮助,我对 kivy 很陌生,我做了一个类来绘制一个矩形作为背景。我很确定我做的一切都是正确的,但是有一个错误,所以这是我的代码 .py 文件

import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.textinput import TextInput

class Background(Widget):
    pass

class MY_browser(App):
    def build(self):
        return Background
        
        
MY_browser().run()

.kv 文件

Floatlayout:
            Background:
                canvas.before:
                    Rectangle:
                        pos: self.pos
                        size: self.size

我已经尝试了很多东西,但没有任何区别,所以如果有人可以提供帮助,我将不胜感激

标签: pythonkivy

解决方案


几个问题:

  • 在您的build()方法中,return Background返回的是一个类,但该build()方法应该返回一个Widget实例。也许这应该是return Background()
  • 在您的kv中,缩进不正确。所有缩进应该是相同数量的空格(通常为 4)的倍数。的缩进Background太大。
  • kv没有为 提供规则Background,因此当Background()返回时,它将只是一个空的Widget。如果你想return Background(),你应该有一个<Background>:规则kv
  • 如果您的kv文件名为my_browser.kv,那么您根本不需要类的build()方法App
  • 如果您的kv文件未按上述方式命名,则您的构建方法可以是return Builder.load_file("kv file name"),其中kv file name替换为kv文件的正确名称。
  • Floatlayoutkv的拼写错误。应该是FloatLayout

推荐阅读