我正在使用GridLayout和ScrollView在表窗口小部件中使用kivy。这是我有:Kivy:制作桌面小部件
https://github.com/Skucul/listwidget
有实现它一个更好的办法?怎么样RecicleView?
我正在使用GridLayout和ScrollView在表窗口小部件中使用kivy。这是我有:Kivy:制作桌面小部件
https://github.com/Skucul/listwidget
有实现它一个更好的办法?怎么样RecicleView?
我得到RecycleView和KivyMD,这与图标和图像列表元素等
我看到你的其他存储库的支持,例如日期选择器和Timepicker非常好的结果,也有类似的,也有非常类似的小工具在KivyMD中,也许你会考虑使用它们甚至更好,提高它们。
KivyMD看起来不错!您是否尝试用pyinstaller冻结您的应用程序?你的KivyMD应用是桌面应用吗?非常感谢! –
from kivy.lang import Builder
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivymd.label import MDLabel
from kivy.uix.button import Button
from kivy.properties import NumericProperty, ListProperty,StringProperty
from kivy.graphics import Color
from kivy.metrics import dp
Builder.load_string('''
#:import MDLabel kivymd.label.MDLabel
<Table>
orientation:'vertical'
size_hint_y:0.9
GridLayout:
id:header
spacing:2
padding:[10,10,10,10]
size_hint_y:None
height:dp(48)
ScrollView:
size_hint_y:1
GridLayout:
id:body
spacing:2
padding:[10,10,10,10]
size_hint_y:None
#spacing:dp(2)
height:self.minimum_height
# GridLayout:
# id:footer
# height:dp(48)
# pos_hint:{'center_y':0.1}
<Header>
padding:[10,10,10,10]
canvas.before:
Color:
rgba: app.theme_cls.accent_dark
Rectangle:
pos: self.pos
size: self.size
size_hint_y:None
size_hint_x:header.size_hint_x
height:dp(48)
MDLabel:
id:header
text:root.text
<Cell>
padding:[10,10,10,10]
canvas.before:
Color:
rgba: app.theme_cls.accent_color
Rectangle:
pos: self.pos
size: self.size
size_hint_y:None
size_hint_x:cell.size_hint_x
height:dp(48)
MDLabel:
id:cell
text:root.text
''')
class Header(BoxLayout):
text = StringProperty()
class Cell(BoxLayout):
text = StringProperty()
class Table(BoxLayout):
cols = NumericProperty(1)
table_content = ListProperty([{"col 1":"row 11","col 2":"row 21"},{"col 1":"row 12","col 2":"row 22"}],allownone=True)
thead = ListProperty()
tbody = ListProperty()
color = [128, 0, 2, 0.8]
def __init__(self, **kwargs):
super(Table, self).__init__(**kwargs)
for i in self.table_content:
self.thead =[]
for j in i.keys():
self.thead.append(j)
self.ids['header'].cols = len(self.thead)
self.ids['body'].cols = len(self.thead)
for i in self.thead:
head = Header(text=i.upper())
self.ids['header'].add_widget(head)
for i in self.table_content:
for j in i.keys():
body = Cell(text=i[j])
self.ids['body'].add_widget(body)
#create MDTable.py file and save above code
#then import class where to add table widget
#simply use below function pass id where to add table and list of data
def add_table(self,id,list):
from table import Table
id.add_widget(Table(table_content=list))
# list example:[{'head1':'content1','head2':'content2'},###{'head1':'content1','head2':'content2'}]
如果您需要,RecycleView功能更强大。 – EL3PHANTEN
@ EL3PHANTEN,我从来没有使用回收视图。如何使用RecycleView创建列和行?你能发表一个简单的例子吗? –