KivyMD - MDTabs - 如何获取当前活动选项卡名称?

KivyMD - MDTabs - How to get current active tab name?

我需要获取当前选项卡的名称。我检查了 this topic。并尝试了这段代码:

from kivy.lang import Builder
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.uix.floatlayout import FloatLayout
from kivymd.uix.tab import MDTabsBase
from kivymd.app import MDApp
kv = Builder.load_string("""
<SM>
    P1:
<P1>
    BoxLayout:
        orientation: 'vertical'
        MDToolbar:
            title: 'TEST'
        MDTabs:
            id: toolbar
            on_tab_switch: root.give_current_tab_name()
            Tab:
                text: 'Tab 1'
            Tab:
                text: 'Tab 2'
            Tab:
                text: 'Tab 3'
""")
class P1(Screen):
    def give_current_tab_name(self):
        print(self.ids.toolbar.carousel.current_slide.tab_label.text) #It gives previous tab name...
class Tab(FloatLayout,MDTabsBase):
    pass
class SM(ScreenManager):
    pass
class MyApp(MDApp):
    def build(self):
        return SM()
if __name__ == '__main__':
    MyApp().run()

但是,它给了我以前的选项卡 name.Should 我使用 schedule_once(testfunc,delay_time) 来检查当前选项卡的名称或者是否有任何其他简单的方法来做到这一点?

此外,我需要禁止滑动页面以更改选项卡。它必须仅来自顶部选项卡names.Can 任何人都可以帮助我解决这些问题。已经谢谢了..

要获取选项卡名称, on_tab_switch 传递 4 个参数:

instance_tabs、instance_tab、instance_tab_label、tab_text

所以你可以这样写:

MDTabs:
    id: toolbar
    on_tab_switch: root.give_current_tab_name(*args)

...

def give_current_tab_name(self, *args):
    tab_name = args[3] 

为了禁止滑动, 只需添加:

MDTabs:
    id: toolbar
    on_tab_switch: root.give_current_tab_name(*args)
    lock_swiping: True