如何解决快速返回kivy MDDataTable并返回NoneType
我试图在我的应用程序中使用MDDataTable,就像我使用ModalViews一样。那就是我在单独的indexui
kivy文件中声明布局,例如
<MyDataTable>
id: table1
size_hint: [0.94,0.8]
use_pagination: True
在单独的indexui
python文件中,我声明了一个从MDDataTable继承的空类
class MyDataTable(MDDataTable):
pass
在main.py文件中,我使用from views.indexui import MyDataTable
导入数据表,并通过在主table = ObjectProperty(MyDataTable())
类中声明实例App
来尝试访问该对象。通过这种声明方法,我应该能够使用self.table.column_data = ['my data','my data']
和self.table.row_data = [('row1',dp(30)),('row2',dp(30))]
我在运行该应用程序时收到以下错误:
AttributeError: 'NoneType' object has no attribute 'property'
如果删除声明ObjectProperty(MyDataTable())的部分,则会收到以下错误:
TypeError: argument of type 'module' is not iterable
有人可以给我一个提示错误原因的线索吗?
这里是最小的例子。当然,我使用实例的方式是在三个不同的Screens
上创建数据表,具体取决于用户是否需要on_entry
并删除它on_leave
。另外,为了使示例最小化,我将所有内容都放在一个文件中。
from kivy.metrics import dp
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.properties import ObjectProperty
from kivymd.uix.datatables import MDDataTable
Builder.load_string('''
<MyDataTable>
id: table1
size_hint: [0.94,0.8]
use_pagination: True
<MyNewAppy>:
''')
class MyDataTable(MDDataTable):
pass
class MyNewAppy(FloatLayout):
pass
class Example(MDApp):
table = ObjectProperty(MyDataTable())
def build(self):
return MyNewAppy()
def on_start(self):
self.table.column_data = [
("Column 1",("Column 2",("Column 3",("Column 4",("Column 5",("Column 6",]
self.table.row_data = [
("1","2","3","4","5","6"),("1",]
self.table.open()
Example().run()
编辑:
如果我将table
变量声明为None
对象,并在MyDataTable()
类中初始化on_start
,则数据表将打开,但为空。
解决方法
KivyMD小部件的常见缺陷(但未记录)是在创建小部件时必须提供这些属性。因此,我相信您的代码应如下所示:
arr
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。