Kivy: Changer d'écran dans l'écran gestionnaire avec un on_press événement
Je voudrais savoir comment faire pour modifier les écrans à l'aide d'un on_press événement lié à un bouton, sans l'aide d'un KV fichier/KV langue.
J'ai lu à travers le Kivy de la documentation, mais ont seulement été en mesure de trouver des solutions à l'aide d'un KV fichier.
Exemple:
on_press: root.manager.current = 'screen2'
Je peux aussi changer l'écran dans le principal fichier python à l'aide de:
screenmanager.current = 'screen2'
Mais je ne peux pas comprendre comment atteindre le même à l'aide d'un bouton.
OriginalL'auteur Derick | 2013-10-21
Vous devez vous connecter pour publier un commentaire.
Une façon simple de le faire est de définir votre propre sous-classe de bouton:
La on_press méthode est automatiquement appelée lorsque le bouton est pressé, donc le menu principal de screenmanager est
current
propriété sera changé.Alors vous pouvez avoir le code quelque chose comme:
Cliquant sur le bouton devrait passer les écrans comme requis.
D'une autre façon (ce qui est probablement la façon dont kv langue en fait) serait manuellement utilisation de la
bind
méthode.Cela signifierait que
switching_function
est appelé à chaque fois qu'some_button
est pressé. Bien sûr, il ya beaucoup de flexibilité sur comment et quand vous définissez la fonction, de sorte que (par exemple) que vous pourriez faire quelque chose de plus général, comme passer le menu principal de screenmanager comme premier argument de la fonction.Je n'ai pas testé ce code et ce n'est pas une complète application, mais j'espère que le sens en est clair. Quelle que soit la méthode devrait fonctionner correctement, vous pouvez choisir la façon qui vous semble la plus judicieuse. Je pourrais construire un exemple plus complet plus tard.
OriginalL'auteur inclement
Un exemple de travail avec deux écrans, pas de kv fichier tout fait en Python:
OriginalL'auteur TomKivy
Une autre solution est d'utiliser les
setter
méthode de EventDispatcher, pour obtenir une référence à la fonction de définition pour screen_manager.actuelbien sûr, ce n'est pas très sexy, c'est pourquoi le kv est souvent une solution plus propre à ces choses, mais il devrait fonctionner.
ps: au cas où vous ne savez pas à ce sujet,
partial
vient de lafunctools
module, et il est souvent utile de construire ce genre de rappels avec un préchargé paramètre.OriginalL'auteur Tshirtman