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