[英]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
文件代碼中,左側(大多數)有兩個具有相同縮進級別的類( WindowsManager
和BoxLayout
)。
從您的代碼中不清楚這兩個中的哪一個是root
小部件,我假設WindowsManager
是root
並將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.