0

尝试这样的代码我让 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])

我希望滚动视图的视口会发生变化,以便标签 tagHL[12] 变得可见。我做错了还是功能被窃听了?

4

1 回答 1

2

为了在小部件创建完成后立即实现,您可以在某个(或不)时间之后(或之前)安排它,Clock.schedule_once(lambda *args : dayview.scroll_to(tagHL[12]),dt)其中dt可以是 -1、0 或任何正值。

附带说明一下,如果您tagHL仅将其用作小部件容器,那么最好使用 ,的children属性。所以,这就像,BoxLayouttest

    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]))
于 2022-01-04T17:40:02.980 回答