J'ai essayé de tester une application de base qui importe un fichier Kv externe en utilisant Inclure.
project-root
|-- main.py
|-- test.kv
`-- gui/
    `-- tab_test.kv
Le code est ci-dessous.
main.py
main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
class RootWidget(BoxLayout):
    
    #Bouton défini dans le fichier Kv_Définir inclure le widget dans le fichier Python
    button_include = ObjectProperty()  
    
    def print_obj(self, obj):
        print(obj)
        
    def check_button_include(self):
        print(self.button_include)  #Accédez à la classe de widget d'un fichier Kv externe à partir d'un fichier Python
class TestApp(App):
    def build(self):
        return RootWidget()
if __name__ == '__main__':
    TestApp().run()
test.kv
#:include gui/tab_test.kv  #Importer un fichier Kv externe
<RootWidget>:
    # button_Définir include comme propriété de RootWidget
    button_include: tab_button_include.button_include
    TabbedPanel:
        do_default_tab: False
        
        TabbedPanelItem:
            text: 'Tab1'
            BoxLayout:
                Button:
                    text: 'button 1'
                    on_press: root.print_obj(self)
                Button:
                    text: 'button 2'
                    on_press: root.check_button_include()
        TabbedPanelItem:
            text: 'Tab2'
            ButtonInclude:  #Utilisez la classe de widget définie dans le fichier Kv externe
                id: tab_button_include  #Attribuer un identifiant à la classe de widget définie
tab_test.kv
<ButtonInclude@Button>:
    button_include: button_include
    id: button_include
    text: 'button include'
    on_press: app.root.print_obj(self)  # "app.root.method"Exécutez la méthode RootWidget à partir du fichier Kv externe avec

Button1          ->   <kivy.uix.button.Button object at 0x000001E0A8DE18D0>
Button2          ->   <kivy.factory.ButtonInclude object at 0x000001E0A8DE1A08>
Button include   ->   <kivy.factory.ButtonInclude object at 0x000001E0A8DE1A08>
Recommended Posts