Hintergrund: Ich habe gelernt Python - und durch sie - Kivy, indem Sie eine App. Ich habe die .kv-Datei und die Builder.load_string-Methoden verwendet, um meine Grafiken zu erstellen, habe mich aber dafür entschieden, ausschließlich Python zu verwenden und alle meine Layouts in Python zu verschieben.So rufen Sie den Kivy-Bildschirmmanager auf. <property> mit Python
Das Problem: Als ich begann, Bildschirme zu verwenden, konnte ich nicht den richtigen Code an die Schaltflächen binden, um die Bildschirme zu übergehen. Wenn ich die Zeile schreibe, zeigt "self.manager.etc ..." auto-complete eine Liste der gültigen Eigenschaften an, die verwendet werden sollen.
Also nach "Selbst." Es zeigt, dass ich "Manager" und nach "Manager" verwenden kann. es glaubt nicht, dass der Manager des Bildschirms eine Eigenschaft "aktuell" oder "Übergang" hat. Ich muss versagt haben, wie ich den Bildschirm mit dem Manager verbunden habe, aber ich kann nicht ergründen, wie.
class HomePage(Screen):
def __init__(self, **kwargs):
super(HomePage, self).__init__(**kwargs)
layout = FloatLayout()
notification = Label(text='upcoming: ....', font_size='16sp', size_hint=(0,0), pos_hint={'center_x':.5, 'top':0.9})
layout.add_widget(notification)
button_row=BoxLayout(size_hint_y=.1, spacing=20)
profile_button=Label(text='Profile')
button_row.add_widget(profile_button)
layout.add_widget(button_row)
self.add_widget(layout)
def transit():
self.manager.current = profile_button # <- this should work, right?
profile_button.bind(on_press=transit)
class ScreenApp(App):
def build(self):
sm = ScreenManager()
sm.add_widget(HomePage(name='home'))
return sm
if __name__ == "__main__":
ScreenApp().run()
Ok, ich war in der Lage es mit ein paar Änderungen zum Laufen zu bringen, was Sie hier haben. Neue Frage/Problem, aber in gleicher Weise. Der Manager hat keine .transition-Eigenschaft. Wenn ich also SlideTransition verwende, wird für jeden Übergang nur eine Folie verschoben. Ich weiß, dass es eine ".transition" -Eigenschaft hat, aber mein Compiler denkt wieder, dass es nicht existiert. – jdanaher
Ich konnte die profile_button nicht oberhalb der Transit-Methodendeklaration binden, da der Compiler dachte, Transit existiere zu diesem Zeitpunkt nicht. Und schließlich passierte das Transit-Selbst, wenn es an den Knopf gebunden war, den Knopf anstelle des Bildschirms. Das Entfernen des Selbst und die Verwendung von def transit (* args) funktionierte wie ein Zauber. – jdanaher
EDIT: vergiss, ich habe endlich Zugriff auf die Übergangseigenschaft! – jdanaher