Это целое приложение, хотя оно короткое:
main.py
:
from kivy.lang import Builder
from kivy.uix.floatlayout import FloatLayout
from kivy.clock import Clock
from kivymd.app import MDApp
from kivymd.uix.tab import MDTabsBase
from kivymd.uix.list import OneLineListItem
from kivymd.icon_definitions import md_icons
class TabList(FloatLayout, MDTabsBase):
"""The engaged power supplies tab."""
def surfacing(self, tab_text):
pass
def discover(self):
for i in range(30):
self.ids.container.add_widget(
OneLineListItem(text=f"Power supply {i + 1:>4}")
)
class TabDetails(FloatLayout, MDTabsBase):
"""The engaged power supply details tab."""
def surfacing(self, tab_text):
self.ids.icon.icon = "equalizer"
class Contero(MDApp):
def build(self):
return Builder.load_file("main.kv")
def on_start(self):
text = "flash"
main = TabList(text=text)
main.surfacing(text)
self.root.ids.android_tabs.add_widget(main)
Clock.schedule_once(lambda dt: main.discover(), 2)
self.root.ids.android_tabs.add_widget(TabDetails(text="equalizer"))
def on_tab_switch(self, instance_tabs, instance_tab, instance_tab_label, tab_text):
"""Called when switching tabs.
:type instance_tabs: <kivymd.uix.tab.MDTabs object>;
:param instance_tab: <__main__.Tab object>;
:param instance_tab_label: <kivymd.uix.tab.MDTabsLabel object>;
:param tab_text: text or name icon of tab;
"""
instance_tab.surfacing(tab_text)
Contero().run()
main.kv
:
BoxLayout:
orientation: "vertical"
#MDToolbar:
# title: "Example Tabs"
MDTabs:
id: android_tabs
on_tab_switch: app.on_tab_switch(*args)
<TabList>:
ScrollView:
bar_margin: 5
bar_width: 15
bar_color: .0, .8, .0, 1
bar_inactive_color: .5, .5, .5, 1
effect_cls: "ScrollEffect"
scroll_type: ["bars", "content"]
scroll_distance: 5
scroll_timeout: 250
MDList:
id: container
<TabDetails>:
MDIconButton:
id: icon
user_font_size: "48sp"
pos_hint: {"center_x": .5, "center_y": .5}
Я бы хотел выберите элемент списка на вкладке списка и перейдите на вкладку Сведения. Выбор с помощью нажмите (или двойное нажатие в качестве режима ожидания), перейдите программно (сгенерировав соответствующее событие tap на вкладке Подробности (справа), если это правильный путь). К сожалению, я даже не могу догадаться, как я должен различать guish между касанием , нажатием и двойным касанием . Судя по визуальным эффектам, MDList
знает некоторые различия.
В основном, есть только Событие вниз , Событие вверх и Событие перемещения они говорят; также должно быть меньше подходов c.