Comment faire une fenêtre avec des boutons en python
Comment puis-je créer une fonction qui rend une fenêtre avec deux boutons, où chaque bouton a une chaîne de caractères spécifiée et, si vous cliquez sur, renvoie une variable spécifiée? Similaire à @ 3:05 dans cette vidéo https://www.khanacademy.org/science/computer-science-subject/computer-science/v/writing-a-simple-factorial-program---python-2 (je sais que c'est un tutoriel très facile programme pour débutants, mais c'est la seule vidéo que j'ai pu trouver), mais sans la zone de texte, et j'ai plus de contrôle sur ce que sont les 'ok' et 'annuler' boutons.
Dois-je créer une fenêtre, dessinez un rectangle avec une ficelle à l'intérieur de lui, et ensuite faire une boucle qui vérifie les mouvements de la souris/clics de souris, et ensuite de retour à quelque chose une fois que la souris coordonnées sont à l'intérieur de l'un des boutons, et la souris est cliquée?
Ou est-il une fonction/ensemble de fonctions qui ferait une fenêtre avec des boutons plus facile? Ou un module?
OriginalL'auteur user2874724 | 2014-03-01
Vous devez vous connecter pour publier un commentaire.
Aperçu
Non, vous n'avez pas à "dessiner un rectangle, puis faire une boucle". Ce que vous sera avez à faire est d'importer un toolkit graphique d'une certaine sorte, et utiliser les méthodes et les objets intégrés à cette boîte à outils. Généralement parlant, l'une de ces méthodes pour exécuter une boucle qui écoute les événements et les appels de fonctions basées sur ces événements. Cette boucle est appelé une boucle d'événements. Donc, si une boucle doit s'exécuter, vous n'avez pas à créer la boucle.
Mises en garde
Si vous êtes à la recherche pour ouvrir une fenêtre à partir d'une invite comme dans la vidéo que vous avez associé, le problème est un peu plus dur. Ces outils ne sont pas conçus pour être utilisés dans une telle manière. En règle générale, vous écrivez un GUI programme où toutes d'entrée et de sortie se fait via des widgets. Il n'est pas impossible, mais à mon avis, lors de l'apprentissage vous devez vous en tenir à tout texte ou de toute interface graphique, et de ne pas mélanger les deux.
Exemple en utilisant Tkinter
Par exemple, l'un de ces outils est d'tkinter. Tkinter est la boîte à outils qui est intégré à python. Toute autre trousse d'outils tels que wxPython, PyQT, etc seront très similaires et fonctionne tout aussi bien. L'avantage de Tkinter est que vous avez probablement déjà, et c'est une formidable boîte à outils pour l'apprentissage de la programmation GUI. C'est aussi fantastique pour les plus avancés de la programmation, mais vous trouverez des gens qui sont en désaccord avec ce point. Ne pas les écouter.
Voici un exemple dans Tkinter. Cet exemple fonctionne en python 2.x. Pour python 3.x vous aurez besoin de les importer à partir d'
tkinter
plutôt queTkinter
.fill="both"
,fill="x"
,padx=20
etanchor="w"
faire.vous pouvez obtenir les réponses à ces questions en lisant le tkinter documentation. Un bon endroit pour commencer est effbot.org/tkinterbook/pack.htm
OriginalL'auteur Bryan Oakley
Vous devriez jeter un oeil à wxpython, une bibliothèque d'interface graphique qui est assez facile pour commencer, si vous avez quelques python connaissances.
Le code suivant va créer une fenêtre pour vous (source):
Prendre un coup d'oeil à ce section (comment créer des boutons). Mais commencer par le les instructions d'installation.
OriginalL'auteur Chigurh
C'est la base.
OriginalL'auteur Kunal Munjal
tkinter est une Bibliothèque d'interface graphique, ce code crée simples boutons texte:
OriginalL'auteur Ieshaan Saxena
Voici ma méthode pour créer une fenêtre avec un bouton appelé "Bonjour!"
et quand c'est fermé, une nouvelle fenêtre s'ouvre avec "Cool!"
mainloop
? Ce code ne fera pas ce que vous pensez que cela fonctionne. Vous avez également lier une méthodeHello
à un événement, mais votre méthode est nomméehello
. Aussi, les meilleures pratiques dites que vous ne devriez pas utiliserbind
sur un bouton; il a uncommand
attribut pour la connexion du bouton à une fonction.OriginalL'auteur SporkX