【发布时间】:2020-07-18 08:16:33
【问题描述】:
所以我有一个程序可以根据存储在 sql 数据库中的一些数据创建一堆 KivyMD 卡。 MDCards 被创建然后添加,程序的那部分循环直到没有更多的卡片可以添加。我想让卡片在添加时一张一张地淡入淡出,所以我为卡片的 opacity 属性设置了动画并将其放在循环中。但是这些卡片会一起动画,就好像它们是一个对象一样。这是该部分的代码
def load_list_entries(self):
mycursor.execute(Remainder_selection)
self.remainders = mycursor.fetchall()
self.remainders_amount = len(self.remainders)
Mainscreenvar = sm.get_screen("MainScreen")
sep = 0
for i in range(self.remainders_amount):
self.remainder = MDCard(size = (Window.width - Window.width/10, '100dp'),
size_hint = (None, None),
color_bg = (0,0,0,0.5),
opacity = 0,
radius = (20,20,20,20),
pos_hint = {"center_x": .5},
pos = (0,str(-sep) + "dp"),
padding = (10,10,10,10),
name = str(self.remainders[i][0])
)
self.remainder.bind(on_release = self.callback_function)
self.element1 = RelativeLayout(size = self.remainder.size,
)
self.element2 = Label(text = self.remainders[i][1],
text_size = self.element1.size,
color = (1,1,1,1) if ThemeManager.theme_style == "Dark" else (0,0,0,1),
valign = "top",
padding = ("20dp","20dp"),
font_name = "Roboto-Black",
font_size = "30sp",
shorten = True,
shorten_from = "right",
)
self.element3 = Label(text = self.remainders[i][2],
text_size = self.element1.size,
color = (1,1,1,0.6) if ThemeManager.theme_style == "Dark" else (0,0,0,0.6),
padding = ("20dp","20dp"),
font_name = "Roboto-Regular",
font_size = "13sp",
shorten = True,
shorten_from = "right")
sep = sep + self.remainder.height + 10
self.element1.add_widget(self.element2)
self.element1.add_widget(self.element3)
self.remainder.add_widget(self.element1)
Mainscreenvar.ids.Remaindercontainer.add_widget(self.remainder)
anim1 = Animation(opacity = 1)
anim1.start(self.remainder)
实际的动画部分是最后几行。我的信念是,首先我会创建一张卡片,将所有必要的部分添加到其中,然后将卡片添加到屏幕上,最后制作一张卡片的动画,然后从头开始再次重复该过程以制作下一张卡片。但是整个动画部分是一次性完成的。我该如何解决这个问题?
【问题讨论】:
标签: python loops kivy kivy-language