You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy中Canvas类对象创建失败:矩形无法显示问题求助

Kivy Canvas 矩形不显示问题解决

问题根源

  1. 无需手动实例化kivy.graphics.Canvas类:每个Widget自带canvas属性,直接操作该属性即可完成绘图,独立创建的Canvas不会被Widget渲染系统识别。
  2. 错误的属性定义位置:你将canvas1定义为类属性,既无法与当前Widget实例绑定,也无法被渲染。
  3. add_widget的使用误区:该方法仅接受Widget类实例,Canvas不属于Widget,因此报错。

修正后的代码

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

class Main(Widget):
    def __init__(self,**kwargs):
        super().__init__(**kwargs)
        # 直接操作Widget自带的canvas上下文
        with self.canvas:
            # 同时指定pos和size,避免默认位置(0,0)导致的视觉盲区
            Rectangle(pos=(100, 100), size=[1000, 400])

class MyApp(App):
    def build(self):
        return Main()

MyApp().run()

核心要点

  • 所有绘图指令需放在Widget的__init__方法内,通过self.canvas执行,确保绘图上下文与Widget实例绑定。
  • Rectangle建议同时设置pos和size,默认pos=(0,0)可能与窗口边缘重合,导致视觉上“无显示”。
  • 永远不要手动创建Canvas实例,Widget内置的canvas是专门用于绘图的上下文,直接使用即可。

内容的提问来源于stack exchange,提问作者Newbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:01:08