【问题标题】:Kivy Error: object.__init__() takes exactly one argument (the instance to initialize) when working with KivyMDKivy 错误:使用 KivyMD 时 object.__init__() 只采用一个参数(要初始化的实例)
【发布时间】:2021-04-09 02:40:34
【问题描述】:

我一直在努力寻找可以实际运行的示例代码,但一直很困难。我正在尝试在 kivy 中找到可以帮助我显示表格然后允许用户更改它然后导出到文本文件的代码。这是我找到的示例代码。在这段代码中,我不断收到错误,object.init() 只接受一个参数(要初始化的实例)。

from kivymd.uix.datatables import MDDataTable
from kivymd.app import MDApp
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.metrics import dp
from kivymd.uix.button import MDRectangleFlatButton


class Manager(ScreenManager):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)


class SecondScreen(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.table = MDDataTable(
            orientation = "lr-tb",
            size_hint=(0.9, 0.6),
            use_pagination=True,
            check=True,
            column_data=[
                ("No.", dp(30)),
                ("Column 1", dp(30)),
                ("Column 2", dp(30)),
                ("Column 3", dp(30)),
                ("Column 4", dp(30)),
                ("Column 5", dp(30)),
            ],
            row_data=[
                (f"{i + 1}", "2.23", "3.65", "44.1", "0.45", "62.5")
                for i in range(50)
            ],
        )

    def on_enter(self):
        self.table.open()


class FirstScreen(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)

    def change_screen(self):
        self.manager.current = "Second"


class TestApp(MDApp):
    def build(self):
        self.window_manager = Manager()
        self.first_screen = FirstScreen(name="First")
        self.sample_screen = SecondScreen(name="Second")
        self.window_manager.add_widget(self.first_screen)
        self.window_manager.add_widget(self.sample_screen)
        return self.window_manager


app = TestApp()
app.run()

有人知道这里发生了什么吗?预先感谢您的帮助。 完整的错误日志: 回溯(最近一次通话最后): 文件“/Users/me/Documents/Kivy Project/Table.py”,第 57 行,在 应用程序 = 测试应用程序(自我) NameError: name 'self' 未定义

进程以退出代码 1 结束

【问题讨论】:

  • 哪一行出现错误?
  • 请提供完整的错误日志

标签: python kivy kivymd


【解决方案1】:

__init__()SecondScreen 方法中,您提供了一个关键字参数:

        orientation = "lr-tb",

MDDataTable 不支持。只需删除该行。

【讨论】:

  • 问题是,当我删除它时,我收到以下错误:ValueError:TableRecycleGridLayout.orientation 设置为无效选项“垂直”。必须是以下之一:['lr-tb', 'tb-lr', 'rl-tb', 'tb-rl', 'lr-bt', 'bt-lr', 'rl-bt', 'bt -rl']
  • 这是一个错误报告给 kivymd here。建议的修复是:“使用主分支的 KivyMD 库”。
猜你喜欢
  • 2021-07-11
  • 2021-01-06
  • 2021-09-15
  • 2020-01-25
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 2021-12-19
  • 2019-12-31
相关资源
最近更新 更多