簡體   English   中英

Kivy ScreenManager 中的 ScrollView

[英]Kivy ScrollView in ScreenManager

我正在嘗試創建幾個與 ScreenManager 連接的可滾動主屏幕但是,當我嘗試時,出現以下錯誤:

.kv只允許一個root object

當我在 kv 文件中添加 WindowsManager 時會發生這種情況。

誰能建議我如何解決這個問題?

from kivy.app import App
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
from kivy.uix.screenmanager import ScreenManager, Screen


class WindowManager(ScreenManager):
    pass

class MenuPage(Screen):
    pass

class MainPage(Screen):
    pass



class Sections(BoxLayout):
    label_text = StringProperty()


kv = Builder.load_file('main text')

class Scrollable(App):
    def build(self):
        return kv

    def on_start(self):
        self.root.ids.sv_box.add_widget(Sections(label_text=''))



Scrollable().run()



**kv file**

WindowsManager:
    MainPage:
    MenuPage:
    
BoxLayout:
    orientation: 'vertical'

    ScrollView:
        do_scroll_y: True
        BoxLayout:
            orientation: 'vertical'
            id: sv_box
            size_hint_y: None
            height: self.minimum_height

<Sections>:
    orientation: 'vertical'
    size_hint_y: None
    height: 800
    BoxLayout:
        size_hint: (1,.5)
        Button:
            text: 'Menu'
            size_hint: (.3,1)
    BoxLayout:
        Label:
            text: 'Time'
    ```

根據 kivy文檔.kv文件最多只能包含一個根小部件。 換句話說,在 kvlang 最左邊的縮進級別(動態類除外)不能有超過一個kvlang

在您發布的.kv文件代碼中,左側(大多數)有兩個具有相同縮進級別的類( WindowsManagerBoxLayout )。

從您的代碼中不清楚這兩個中的哪一個是root小部件,我假設WindowsManagerroot並將BoxLayout內容移動到MainPage下。 因此,您修改后的main text.kv文件現在看起來像,


WindowManager: # WindowsManager
    MainPage:
        BoxLayout:
            orientation: 'vertical'

            ScrollView:
                do_scroll_y: True
                BoxLayout:
                    orientation: 'vertical'
                    id: sv_box
                    size_hint_y: None
                    height: self.minimum_height

    MenuPage:


<Sections>:
    orientation: 'vertical'
    size_hint_y: None
    height: 800
    BoxLayout:
        size_hint: (1,.5)
        Button:
            text: 'Menu'
            size_hint: (.3,1)
    BoxLayout:
        Label:
            text: 'Time'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM