Kivy自定义小部件绑定错误。

4
我将尝试制作一个小的俄罗斯方块游戏来学习使用kivy的python技术。我正在尝试创建一个大小为20x20的自定义小部件。当我将其添加到浮动布局中并运行下面的代码时,会出现以下错误:
错误信息:
File "D:\OS Files\workspace\Tetris\holder.py", line 10, in __init__ self.add_widget(c)
File "C:\Kivy180\kivy\kivy\uix\floatlayout.py", line 115, in add_widget pos_hint=self._trigger_layout)
TypeError: descriptor 'bind' of 'kivy._event.EventDispatcher' object needs an argument

代码: holder.py文件:

from items import Cell

class Holder(FloatLayout):
    def __init__(self, **kwargs):
        super(Holder,self).__init__(**kwargs)
        self.size=(300,300)
        c=Cell
        #c.pos= (20,20)
        self.add_widget(c)
        #self.add_widget(c)

items.py文件:

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

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

        self.height=50
        self.width=50

主要.py文件:

from kivy.app import App
from holder import Holder

class start(App):
    def build(self):
        return Holder()

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

请问您能否解释一下我哪里出错了,我在起点就卡住了。关于错误,我也没有编写任何事件,只是一个小部件类。请问您能否解释一下我在理解kivy方面犯了哪些错误。


1
“c=Cell” 应该加括号和参数吗? - Kevin
好的,谢谢你的帮助。你能将其保留为答案吗?我会将其标记为正确的。但对于初学者来说,这些是常见的错误,我来自VB.net和Visual Studios,它们通常会处理这些小问题。 - surpavan
1个回答

3
c=Cell

我猜您想让c成为Cell类的一个实例。如果您想这样做,您需要执行以下操作:

c=Cell()

我使用了“c.pos=(200,200)”,但是小部件仍然只添加在角落里,您能否再次帮我纠正一下。 - surpavan
抱歉,我其实不太了解Kivy,无法诊断那个问题 :-( - Kevin
好的,你回答了我的实际问题。谢谢。 - surpavan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接