【问题标题】:How do I draw a simple line and a rectangle using Kivy in Python3?如何在 Python3 中使用 Kivy 绘制一条简单的线和一个矩形?
【发布时间】:2019-02-04 20:40:05
【问题描述】:

我只是想让程序使用 Kivy 在窗口中绘制一条线和一个矩形。位置和属性暂时无关紧要。

我是 Python 新手,对 Kivy 也很陌生,而且我以前从未使用过 GUI。我尝试在多个网站上进行搜索,但似乎没有一个可以解决我的问题。

import kivy
kivy.require('1.10.1')
from kivy.app import App
from kivy.uix.button import Label

class KivyTest(App):
    self.pos = 12
    self.size = 6

    def build(self):
        with self.canvas:
            Line(points=(0, 1, 2, 3, 4, 5))
            Color(1, 0, 0, .5, mode='rgba')
            Rectangle(pos=self.pos, size=self.size)

KivyTest = KivyTest()
KivyTest.run()

我希望 12 是矩形的位置,6 是它的大小,但是打印出错误消息“name 'self' is not defined”。显然有一些我不明白的关键。我也很喜欢,如果有办法使用 .kv 文件来解决我的问题,我只使用 .py 文件,因为 .kv 也不适用于我。

【问题讨论】:

    标签: python python-3.x kivy


    【解决方案1】:

    在你定义的第一行

    class KivyTest(App):
        self.pos = 12
        self.size = 6
    

    并且self 不存在那里;为了初始化你必须做的那些值:

    class KivyTest(App):
        def __init__(self):
            self.pos = 12
            self.size = 6
    

    【讨论】:

    • 非常感谢您的回答。我决定现在实施您的最后一个选项。现在我收到一条新的错误消息:'KivyTest' 对象没有属性'canvas' 不幸的是我没有使用画布的任何经验,所以我可能想尝试其他方法。
    • 好像app 没有画布;一个小部件。
    • 不要使用最后一个选项,使用@Tordek 建议的第一个选项。最后一个覆盖了普通的 kivy pos 和 size 对象(这些是在类级别定义的描述符),您不想这样做。
    • 好点,我不知道它们很特别;我已经修改了答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    • 2020-05-14
    • 2020-11-09
    • 2011-04-19
    • 1970-01-01
    相关资源
    最近更新 更多