Ich habe eine Basis-App getestet, die Include zum Importieren externer Kv-Dateien verwendet.
project-root
|-- main.py
|-- test.kv
`-- gui/
`-- tab_test.kv
Der Code ist unten.
main.py
main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import ObjectProperty
class RootWidget(BoxLayout):
#In der Kv-Datei definierte Schaltfläche_Definieren Sie das Include-Widget in der Python-Datei
button_include = ObjectProperty()
def print_obj(self, obj):
print(obj)
def check_button_include(self):
print(self.button_include) #Greifen Sie innerhalb einer Python-Datei auf die Widget-Klasse einer externen Kv-Datei zu
class TestApp(App):
def build(self):
return RootWidget()
if __name__ == '__main__':
TestApp().run()
test.kv
#:include gui/tab_test.kv #Importieren Sie eine externe Kv-Datei
<RootWidget>:
# button_Definieren Sie include als Eigenschaft von 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: #Verwenden Sie die in der externen Kv-Datei definierte Widget-Klasse
id: tab_button_include #Weisen Sie der definierten Widget-Klasse eine ID zu
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"Führen Sie die RootWidget-Methode aus der externen Kv-Datei mit aus
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