尝试这样的代码,我可以很好地使用Scrollview,但scroll_to((函数没有任何作用。视图仍然从顶部位置开始。
pixperhour = 60
tagHL = []
dayview = ScrollView(size_hint=(1,1))
test = BoxLayout(size_hint=(1,None), height=24*pixperhour, orientation='vertical')
dayview.add_widget(test)
for i in range(24):
tagHL.append(Label())
test.add_widget(tagHL[i])
tagHL[i].text = "Label "+str(i)
tagHL[i].color = (1, 1, 1)
tagHL[i].font_size = 30
dayview.scroll_to(tagHL[12])
我希望滚动视图的视口发生变化,以便标签标签HL[12]可见。是我做错了还是功能有问题?
为了在小部件创建完成后立即进行,您可以将其安排在某个时间之后(或之前((或没有(,如Clock.schedule_once(lambda *args : dayview.scroll_to(tagHL[12]),dt)
,其中dt
可以是-1、0或任何正值。
附带说明一下,如果您将tagHL
用作小部件容器,那么最好使用BoxLayout
、test
的children
属性。所以,这就像
for i in range(24):
self.lbl = Label(
text=f"Label {i}",
color = [1, 1, 1],
font_size = 30,
)
test.add_widget(self.lbl)
Clock.schedule_once(lambda *x : dayview.scroll_to(test.children[::-1][12]))