Je recherche le même effet qu'en alert()
JavaScript.
J'ai écrit cet après-midi un simple interpréteur basé sur le Web en utilisant Twisted.web. En gros, vous soumettez un bloc de code Python via un formulaire, et le client vient le saisir et l'exécute. Je veux pouvoir créer un simple message contextuel, sans avoir à réécrire tout un tas de code standard wxPython ou TkInter à chaque fois (puisque le code est soumis via un formulaire et disparaît ensuite).
J'ai essayé tkMessageBox:
import tkMessageBox
tkMessageBox.showinfo(title="Greetings", message="Hello World!")
mais cela ouvre une autre fenêtre en arrière-plan avec une icône tk. Je ne veux pas de ça. Je cherchais du code wxPython simple mais il fallait toujours configurer une classe et entrer une boucle d'application, etc. N'y a-t-il pas de moyen simple et sans accroc de créer une boîte de message en Python?
Avez-vous regardé easygui ?
la source
Vous pouvez également positionner l'autre fenêtre avant de la retirer afin de positionner votre message
la source
Le code que vous avez présenté est bien! Il vous suffit de créer explicitement "l'autre fenêtre en arrière-plan" et de la masquer, avec ce code:
Juste avant votre boîte de message.
la source
Le module PyMsgBox fait exactement cela. Il a des fonctions de boîte de message qui suivent les conventions de dénomination de JavaScript: alert (), confirm (), prompt () et password () (qui est prompt () mais utilise * lorsque vous tapez). Ces appels de fonction bloquent jusqu'à ce que l'utilisateur clique sur un bouton OK / Annuler. C'est un module Python pur et multiplateforme sans dépendances.
Installer avec:
pip install PyMsgBox
Exemple d'utilisation:
Documentation complète sur http://pymsgbox.readthedocs.org/en/latest/
la source
AssertionError: Tkinter is required for pymsgbox
pip
, mais en fait, une partie des bibliothèques sont installées dans l'autre sens - en utilisant le gestionnaire de paquets système. J'ai donc installé enpython-tk
utilisant mon gestionnaire de paquets. J'utilise Python 2.7 sur Debian.Sous Windows, vous pouvez utiliser des ctypes avec la bibliothèque user32 :
la source
Sur Mac, la bibliothèque standard python a un module appelé
EasyDialogs
. Il existe également une version Windows (basée sur ctypes) à l' adresse http://www.averdevelopment.com/python/EasyDialogs.htmlSi cela compte pour vous: il utilise des dialogues natifs et ne dépend pas de Tkinter comme déjà mentionné
easygui
, mais il peut ne pas avoir autant de fonctionnalités.la source
Le dernier numéro (ici 1) peut être changé pour changer le style de la fenêtre (pas seulement les boutons!):
Par exemple,
donnera ceci :
la source
Utilisation
La fenêtre principale doit être créée au préalable. Ceci est pour Python 3. Ce n'est pas pour wxPython, mais pour tkinter.
la source
la source
Vous pouvez également positionner l'autre fenêtre avant de la retirer afin de positionner votre message
Remarque: Ceci est la réponse de Lewis Cowles juste Python 3ified, puisque tkinter a changé depuis python 2. Si vous voulez que votre code soit compatible avec les backwords, faites quelque chose comme ceci:
la source
Pas le meilleur, voici ma boîte de message de base en utilisant uniquement tkinter.
la source
consultez mon module python: pip install quickgui (nécessite wxPython, mais ne nécessite aucune connaissance de wxPython) https://pypi.python.org/pypi/quickgui
Peut créer n'importe quel nombre d'entrées (ratio, case à cocher, case d'entrée), les organiser automatiquement sur une seule interface graphique.
la source
Une version récente de la boîte de message est le module prompt_box. Il a deux packages: alerte et message. Le message vous donne un meilleur contrôle sur la boîte, mais prend plus de temps à taper.
Exemple de code d'alerte:
Exemple de code de message:
la source
module ctype avec threading
J'utilisais la boîte de message tkinter mais cela plantait mon code. Je ne voulais pas savoir pourquoi j'ai donc utilisé le module ctypes à la place.
par exemple:
j'ai ce code d' Arkelis
J'ai aimé le fait qu'il ne plante pas le code, alors j'ai travaillé dessus et ajouté un filetage pour que le code soit exécuté.
exemple pour mon code
pour les styles de boutons et les numéros d'icônes:
la source
Vous pouvez utiliser
pyautogui
oupymsgbox
:Utiliser
pymsgbox
équivaut à utiliserpyautogui
:la source