Szukam tego samego efektu co alert()
w JavaScript.
Dziś po południu napisałem prostego tłumacza internetowego, używając Twisted.web. Zasadniczo przesyłasz blok kodu Pythona za pośrednictwem formularza, a klient przychodzi, pobiera go i wykonuje. Chcę mieć możliwość tworzenia prostego komunikatu wyskakującego bez konieczności ponownego pisania całej serii standardowego kodu wxPython lub TkInter za każdym razem (ponieważ kod jest przesyłany za pośrednictwem formularza, a następnie znika).
Wypróbowałem tkMessageBox:
import tkMessageBox
tkMessageBox.showinfo(title="Greetings", message="Hello World!")
ale to otwiera kolejne okno w tle z ikoną tk. Nie chcę tego. Szukałem prostego kodu wxPython, ale zawsze wymagało to skonfigurowania klasy i wprowadzenia pętli aplikacji itp. Czy nie ma prostego, pozbawionego zaczepów sposobu tworzenia okna komunikatu w Pythonie?
Czy spojrzałeś na easygui ?
źródło
Możesz także ustawić drugie okno przed jego wycofaniem, aby ustawić swoją wiadomość
źródło
Przedstawiony kod jest w porządku! Musisz tylko jawnie utworzyć „inne okno w tle” i ukryć je za pomocą tego kodu:
Tuż przed Twoją skrzynką wiadomości.
źródło
Moduł PyMsgBox robi dokładnie to. Posiada funkcje okien komunikatów, które są zgodne z konwencją nazewnictwa JavaScript: alert (), confirm (), prompt () i password () (co jest prompt (), ale używa * podczas pisania). Te wywołania funkcji blokują się, dopóki użytkownik nie kliknie przycisku OK / Anuluj. Jest to wieloplatformowy, czysty moduł Pythona bez żadnych zależności.
Zainstaluj za pomocą:
pip install PyMsgBox
Przykładowe użycie:
Pełna dokumentacja pod adresem http://pymsgbox.readthedocs.org/en/latest/
źródło
AssertionError: Tkinter is required for pymsgbox
pip
, ale w rzeczywistości część bibliotek jest instalowana w drugą stronę - za pomocą systemowego menedżera pakietów. Więc zainstalowałempython-tk
za pomocą mojego menedżera pakietów. Używam Pythona 2.7 na Debianie.W systemie Windows możesz używać ctypów z biblioteką user32 :
źródło
Na komputerze Mac standardowa biblioteka Pythona ma moduł o nazwie
EasyDialogs
. Dostępna jest również wersja systemu Windows (oparta na ctypes) pod adresem http://www.averdevelopment.com/python/EasyDialogs.htmlJeśli ma to dla Ciebie znaczenie: używa natywnych dialogów i nie zależy od Tkintera, jak już wspomniano
easygui
, ale może nie mieć tak wielu funkcji.źródło
Ostatni numer (tutaj 1) można zmienić, aby zmienić styl okna (nie tylko przyciski!):
Na przykład,
da to :
źródło
Posługiwać się
Okno główne musi zostać utworzone wcześniej. To jest dla Pythona 3. To nie jest fot wxPython, ale tkinter.
źródło
źródło
Możesz także ustawić drugie okno przed jego wycofaniem, aby ustawić swoją wiadomość
Uwaga: to jest odpowiedź Lewisa Cowlesa tylko w Pythonie 3ified, ponieważ tkinter zmienił się od czasu pythona 2. Jeśli chcesz, aby Twój kod był kompatybilny z hasłami wstecznymi, zrób coś takiego:
źródło
Nie najlepiej, oto moja podstawowa skrzynka wiadomości używająca tylko tkintera.
źródło
sprawdź mój moduł Pythona: pip install quickgui (wymaga wxPython, ale nie wymaga znajomości wxPython) https://pypi.python.org/pypi/quickgui
Potrafi tworzyć dowolną liczbę wejść (stosunek, pole wyboru, pole wprowadzania), automatycznie układać je na jednym GUI.
źródło
Najnowszą wersją okna komunikatów jest moduł prompt_box. Ma dwa pakiety: alert i komunikat. Wiadomość zapewnia większą kontrolę nad polem, ale jej wpisanie zajmuje więcej czasu.
Przykładowy kod alertu:
Przykładowy kod wiadomości:
źródło
moduł ctype z gwintowaniem
Używałem skrzynki tkinter, ale spowodowałoby to awarię kodu. nie chciałem dowiedzieć się dlaczego, więc zamiast tego użyłem modułu ctypes .
na przykład:
dostałem ten kod od Arkelis
Podobało mi się, że nie spowodowało to awarii kodu, więc popracowałem nad tym i dodałem wątkowanie, aby kod później działał.
przykład dla mojego kodu
dla stylów przycisków i numerów ikon:
źródło
Możesz użyć
pyautogui
lubpymsgbox
:Używanie
pymsgbox
jest takie samo jak używaniepyautogui
:źródło