Ich suche den gleichen Effekt wie alert()
in JavaScript.
Ich habe heute Nachmittag einen einfachen webbasierten Interpreter mit Twisted.web geschrieben. Sie senden im Grunde einen Block Python-Code über ein Formular, und der Client kommt und greift danach und führt ihn aus. Ich möchte in der Lage sein, eine einfache Popup-Nachricht zu erstellen, ohne jedes Mal eine ganze Reihe von wxPython- oder TkInter-Code neu schreiben zu müssen (da der Code über ein Formular gesendet wird und dann verschwindet).
Ich habe versucht, tkMessageBox:
import tkMessageBox
tkMessageBox.showinfo(title="Greetings", message="Hello World!")
Dies öffnet jedoch ein weiteres Fenster im Hintergrund mit einem tk-Symbol. Ich will das nicht Ich habe nach einem einfachen wxPython-Code gesucht, aber es war immer erforderlich, eine Klasse einzurichten und eine App-Schleife einzugeben usw. Gibt es keine einfache, abfangfreie Möglichkeit, ein Nachrichtenfeld in Python zu erstellen?
Hast du dir easygui angesehen ?
quelle
Sie können auch das andere Fenster positionieren, bevor Sie es zurückziehen, damit Sie Ihre Nachricht positionieren
quelle
Der Code, den Sie präsentiert haben, ist in Ordnung! Sie müssen nur das "andere Fenster im Hintergrund" explizit erstellen und mit diesem Code ausblenden:
Direkt vor Ihrer Messagebox.
quelle
Das PyMsgBox-Modul macht genau das. Es verfügt über Meldungsfeldfunktionen, die den Namenskonventionen von JavaScript entsprechen: alert (), verify (), prompt () und password () (dies ist prompt (), verwendet jedoch *, wenn Sie eingeben). Diese Funktionsaufrufe werden blockiert, bis der Benutzer auf die Schaltfläche OK / Abbrechen klickt. Es ist ein plattformübergreifendes, reines Python-Modul ohne Abhängigkeiten.
Installieren mit:
pip install PyMsgBox
Beispielnutzung:
Vollständige Dokumentation unter http://pymsgbox.readthedocs.org/en/latest/
quelle
AssertionError: Tkinter is required for pymsgbox
pip
, aber tatsächlich wird ein Teil der Bibliotheken auf die andere Weise installiert - mithilfe des Systempaket-Managers. Also habe ichpython-tk
mit meinem Paketmanager installiert . Ich verwende Python 2.7 unter Debian.In Windows können Sie ctypes mit der user32-Bibliothek verwenden :
quelle
Unter Mac verfügt die Python-Standardbibliothek über ein Modul namens
EasyDialogs
. Es gibt auch eine (ctypes-basierte) Windows-Version unter http://www.averdevelopment.com/python/EasyDialogs.htmlWenn es Ihnen wichtig ist: Es verwendet native Dialoge und hängt nicht wie bereits erwähnt von Tkinter ab
easygui
, verfügt jedoch möglicherweise nicht über so viele Funktionen.quelle
Die letzte Nummer (hier 1) kann geändert werden, um den Fensterstil zu ändern (nicht nur Schaltflächen!):
Beispielsweise,
geben diese :
quelle
Verwenden
Das Hauptfenster muss vorher erstellt werden. Dies ist für Python 3. Dies ist nicht für wxPython, sondern für tkinter.
quelle
quelle
Sie können auch das andere Fenster positionieren, bevor Sie es zurückziehen, damit Sie Ihre Nachricht positionieren
Bitte beachten Sie: Dies ist Lewis Cowles 'Antwort nur Python 3ified, da sich tkinter seit Python 2 geändert hat. Wenn Sie möchten, dass Ihr Code mit Backwords kompatibel ist, gehen Sie wie folgt vor:
quelle
Nicht das Beste, hier ist meine grundlegende Nachrichtenbox, in der nur tkinter verwendet wird.
quelle
Schauen Sie sich mein Python-Modul an: pip install quickgui (Erfordert wxPython, erfordert jedoch keine Kenntnisse von wxPython) https://pypi.python.org/pypi/quickgui
Kann eine beliebige Anzahl von Eingaben (Verhältnis, Kontrollkästchen, Eingabefeld) erstellen und diese automatisch auf einer einzelnen Benutzeroberfläche anordnen.
quelle
Eine aktuelle Version des Meldungsfelds ist das Modul prompt_box. Es hat zwei Pakete: Alarm und Nachricht. Mit der Nachricht haben Sie eine bessere Kontrolle über die Box, die Eingabe dauert jedoch länger.
Beispiel Warncode:
Beispiel für einen Nachrichtencode:
quelle
ctype-Modul mit Threading
Ich habe die tkinter-Nachrichtenbox verwendet, aber sie würde meinen Code zum Absturz bringen. Ich wollte nicht herausfinden, warum, also habe ich stattdessen das Modul ctypes verwendet.
beispielsweise:
Ich habe diesen Code von Arkelis bekommen
Ich mochte es, dass es den Code nicht zum Absturz brachte, also arbeitete ich daran und fügte ein Threading hinzu, damit der Code danach ausgeführt wurde.
Beispiel für meinen Code
für Schaltflächenstile und Symbolnummern:
quelle
Sie können verwenden
pyautogui
oderpymsgbox
:Verwenden
pymsgbox
ist dasselbe wie Verwenden vonpyautogui
:quelle