kivy自定义小部件绑定错误

2022-01-15 00:00:00 python python-3.x kivy widget

问题描述

我正在尝试制作一个小型俄罗斯方块游戏,用于使用 kivy 学习 python.我正在尝试创建一个大小为 20,20 的自定义小部件.当我将它添加到浮动布局并运行以下代码时,我收到以下错误:

I am trying to make a small tetris game for learning python with kivy. I am trying to create a custom widget with size 20,20. When I add it to the float layout and run the below code I receive the following error:

错误:

File "D:OS FilesworkspaceTetrisholder.py", line 10, in __init__ self.add_widget(c)
File "C:Kivy180kivykivyuixfloatlayout.py", line 115, in add_widget pos_hint=self._trigger_layout)
TypeError: descriptor 'bind' of 'kivy._event.EventDispatcher' object needs an argument

代码:holder.py 文件:

Code: holder.py File:

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 文件:

items.py File:

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

main.py 文件:

main.py File:

from kivy.app import App
from holder import Holder

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

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

您能否解释一下我哪里出错了,我被困在起点本身.关于错误,我也没有写任何事件,它只是一个小部件类.能否请您解释一下我在理解 kivy 方面出了什么问题.

Could you please explain where I went wrong, I am stuck at the starting point itself. Regarding the error, I haven't written any events also, and it is just a widget class. Could you please explain where I went wrong in understanding kivy.


解决方案

c=Cell

我打赌你希望 c 成为 Cell 类的一个实例.如果你想这样做,你需要这样做:

I bet you want c to be an instance of the Cell class. If you want to do that, you need to do:

c=Cell()

相关文章