【问题标题】:Kivymd MDDataTable failed to executeKivymd MDDataTable 执行失败
【发布时间】:2021-04-08 18:12:00
【问题描述】:

我正在尝试这个关于 MDDataTable 的简单代码,但每次执行它时它总是给我错误。最近我成功运行了不同的 KivyMD 函数,但是这个简单的表格让我很头疼。

Python 代码

from kivymd.app import MDApp
from kivymd.uix.screen import Screen
from kivymd.uix.datatables import MDDataTable
from kivy.metrics import dp

class Demo(MDApp):
    def build(self):
        screen  = Screen()
        table = MDDataTable(orientation = "lr-tb",
                            column_data = [
                                ("Food",dp(30)),
                                ("Calories", dp(30))
                            ])
        screen.add_widget(table)
        return screen
Demo().run()

错误

 Traceback (most recent call last):
   File "C:/Users/User/PycharmProjects/purbar/dataTabols.py", line 16, in <module>
     Demo().run()
   File "C:\Users\User\PycharmProjects\purbar\venv\lib\site-packages\kivy\app.py", line 949, in run
     self._run_prepare()
   File "C:\Users\User\PycharmProjects\purbar\venv\lib\site-packages\kivy\app.py", line 919, in _run_prepare
     root = self.build()
   File "C:/Users/User/PycharmProjects/purbar/dataTabols.py", line 9, in build
     table = MDDataTable(orientation = "lr-tb",
   File "C:\Users\User\PycharmProjects\purbar\venv\lib\site-packages\kivymd\uix\datatables.py", line 923, in __init__
     super().__init__(**kwargs)
   File "C:\Users\User\PycharmProjects\purbar\venv\lib\site-packages\kivymd\theming.py", line 907, in __init__
     super().__init__(**kwargs)
   File "C:\Users\User\PycharmProjects\purbar\venv\lib\site-packages\kivy\uix\modalview.py", line 187, in __init__
     super(ModalView, self).__init__(**kwargs)
   File "C:\Users\User\PycharmProjects\purbar\venv\lib\site-packages\kivy\uix\anchorlayout.py", line 68, in __init__
     super(AnchorLayout, self).__init__(**kwargs)
   File "C:\Users\User\PycharmProjects\purbar\venv\lib\site-packages\kivy\uix\layout.py", line 76, in __init__
     super(Layout, self).__init__(**kwargs)
   File "C:\Users\User\PycharmProjects\purbar\venv\lib\site-packages\kivy\uix\widget.py", line 350, in __init__
     super(Widget, self).__init__(**kwargs)
   File "kivy\_event.pyx", line 245, in kivy._event.EventDispatcher.__init__
 TypeError: object.__init__() takes exactly one argument (the instance to initialize)

【问题讨论】:

    标签: python kivy kivymd


    【解决方案1】:

    每当你遇到错误时:

    TypeError: object.__init__() takes exactly one argument
    

    它告诉你 object 类的 __init__() 方法正在被一个意外的参数调用。 object 类是所有 python 类的基类(参见 documentation)。在 python 中,当您创建某个类的新实例时,它的 __init__() 方法将使用您提供的任何参数调用。普通的__init__() 将获取它识别的关键字参数,并将任何剩余的关键字参数传递给它的基类。这将一直持续到最终调用 object 类的 __init__()object__init__() 方法不接受任何参数,因此在 object__init__() 中存在的任何关键字参数都会抛出您看到的错误。如果您向无法识别的 __init__() 方法提供关键字参数,就会发生这种情况。在您的情况下,无法识别的参数是orientationMDDataTable 类无法将 orientation 识别为关键字参数,因此它一直向下传递到 object 类并引发错误。

    TLDR:只需删除 orientation = "lr-tb"

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题并找到了这个链接:Unable to find TableRecycleGridLayout to fix Kivy code,这是(我猜)你避免“垂直”错误消息的解决方案。 它对我不起作用,所以我从 kivymd.uix.datatables.py 中的 TableRecycleGridLayout 模板中删除了一对“orientation: vertical”,它解决了这个问题。这可能是 kivimd 错误。

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题。删除 orientation='tb-lr' 会引发 ValueError (see here),但包含它会得到与您所经历的相同的 TypeError

        到目前为止,我可以通过从源代码(即来自https://github.com/kivymd/KivyMD)安装 KivyMD 来解决它,如下所示:

        git clone https://github.com/kivymd/KivyMD.git --depth 1
        cd KivyMD
        pip install .
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-08-16
          • 2023-03-15
          • 1970-01-01
          • 2019-04-17
          • 2021-04-11
          • 2020-03-07
          • 1970-01-01
          相关资源
          最近更新 更多