选项卡中的滚动视图 kivy/KivyMD
ScrollView in Tabs kivy/KivyMD
问题已更新
我有一个代码:
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivymd.app import MDApp
from kivymd.uix.tab import MDTabsBase
KV = '''
BoxLayout:
orientation: "vertical"
MDToolbar:
left_action_items: [["menu", lambda x: x]]
title: "Smart home & its components"
MDTabs:
id: tabs
on_tab_switch: app.on_tab_switch(*args)
Tab:
text: 'Smart home'
FitImage:
source: 'smarthome.png'
Tab:
text: 'Smart garage'
ScrollView:
do_scroll_x: False
FitImage:
size_hint: (None, None)
size: root.size
source: 'garage.jpg'
Button:
size_hint: (None, None)
size: (100, 100)
Button:
size_hint: (None, None)
size: (100, 100)
<Tab>:
'''
class Tab(FloatLayout, MDTabsBase):
pass
class Example(MDApp):
def build(self):
return Builder.load_string(KV)
def on_tab_switch(self, instance_tabs, instance_tab, instance_tab_label, tab_text):
pass
Example().run()
'''
class Tab(FloatLayout, MDTabsBase):
pass
class Example(MDApp):
def build(self):
return Builder.load_string(KV)
def on_tab_switch(self, instance_tabs, instance_tab, instance_tab_label, tab_text):
pass
Example().run()
部分代码:
Button:
size_hint: (None, None)
size: (100, 100)
Button:
size_hint: (None, None)
size: (100, 100)
当我 运行 没有这部分的代码时,我在第二个选项卡中得到可滚动的图像,但是当我 运行 有这部分代码的代码时,我得到错误。
错误:
Exception: ScrollView accept only one widget
我明白为什么我会出错并且 ScrollView 只接受一个小部件,但如果可能的话,如何将按钮放在我的可滚动图像下?
谢谢你
from kivy.lang import Builder
from kivy.properties import StringProperty
from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.label import MDLabel
from kivymd.uix.tab import MDTabsBase
KV = '''
MDBoxLayout:
orientation: "vertical"
MDToolbar:
title: "Example Tabs Toolbar"
MDTabs:
id: tabs
on_tab_switch: app.on_tab_switch(*args)
Tab:
text: 'Smart home'
source: 'image.png'
Tab:
text: 'Smart garage'
source: 'image.png'
<Tab>:
orientation: "vertical"
FitImage:
source: root.source
ScrollView:
MDList:
id: box
'''
class Tab(MDBoxLayout, MDTabsBase):
source = StringProperty()
class Example(MDApp):
def build(self):
return Builder.load_string(KV)
def on_start(self):
self.root.ids.tabs.switch_tab('Smart garage')
def on_tab_switch(self, instance_tabs, instance_tab, instance_tab_label, tab_text):
instance_tab.ids.box.clear_widgets()
for i in range(20):
instance_tab.ids.box.add_widget(
MDLabel(text=f"Text {i}", halign="center")
)
Example().run()
ScrollView:
do_scroll_x: False
MDList:
FitImage:
size_hint: (None, None)
size: root.size
source: 'garage.jpg'
Button:
size_hint: (None, None)
size: (100, 100)
Button:
size_hint: (None, None)
size: (100, 100)
问题已更新
我有一个代码:
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivymd.app import MDApp
from kivymd.uix.tab import MDTabsBase
KV = '''
BoxLayout:
orientation: "vertical"
MDToolbar:
left_action_items: [["menu", lambda x: x]]
title: "Smart home & its components"
MDTabs:
id: tabs
on_tab_switch: app.on_tab_switch(*args)
Tab:
text: 'Smart home'
FitImage:
source: 'smarthome.png'
Tab:
text: 'Smart garage'
ScrollView:
do_scroll_x: False
FitImage:
size_hint: (None, None)
size: root.size
source: 'garage.jpg'
Button:
size_hint: (None, None)
size: (100, 100)
Button:
size_hint: (None, None)
size: (100, 100)
<Tab>:
'''
class Tab(FloatLayout, MDTabsBase):
pass
class Example(MDApp):
def build(self):
return Builder.load_string(KV)
def on_tab_switch(self, instance_tabs, instance_tab, instance_tab_label, tab_text):
pass
Example().run()
'''
class Tab(FloatLayout, MDTabsBase):
pass
class Example(MDApp):
def build(self):
return Builder.load_string(KV)
def on_tab_switch(self, instance_tabs, instance_tab, instance_tab_label, tab_text):
pass
Example().run()
部分代码:
Button:
size_hint: (None, None)
size: (100, 100)
Button:
size_hint: (None, None)
size: (100, 100)
当我 运行 没有这部分的代码时,我在第二个选项卡中得到可滚动的图像,但是当我 运行 有这部分代码的代码时,我得到错误。
错误:
Exception: ScrollView accept only one widget
我明白为什么我会出错并且 ScrollView 只接受一个小部件,但如果可能的话,如何将按钮放在我的可滚动图像下?
谢谢你
from kivy.lang import Builder
from kivy.properties import StringProperty
from kivymd.app import MDApp
from kivymd.uix.boxlayout import MDBoxLayout
from kivymd.uix.label import MDLabel
from kivymd.uix.tab import MDTabsBase
KV = '''
MDBoxLayout:
orientation: "vertical"
MDToolbar:
title: "Example Tabs Toolbar"
MDTabs:
id: tabs
on_tab_switch: app.on_tab_switch(*args)
Tab:
text: 'Smart home'
source: 'image.png'
Tab:
text: 'Smart garage'
source: 'image.png'
<Tab>:
orientation: "vertical"
FitImage:
source: root.source
ScrollView:
MDList:
id: box
'''
class Tab(MDBoxLayout, MDTabsBase):
source = StringProperty()
class Example(MDApp):
def build(self):
return Builder.load_string(KV)
def on_start(self):
self.root.ids.tabs.switch_tab('Smart garage')
def on_tab_switch(self, instance_tabs, instance_tab, instance_tab_label, tab_text):
instance_tab.ids.box.clear_widgets()
for i in range(20):
instance_tab.ids.box.add_widget(
MDLabel(text=f"Text {i}", halign="center")
)
Example().run()
ScrollView:
do_scroll_x: False
MDList:
FitImage:
size_hint: (None, None)
size: root.size
source: 'garage.jpg'
Button:
size_hint: (None, None)
size: (100, 100)
Button:
size_hint: (None, None)
size: (100, 100)