Estou procurando o mesmo efeito alert()
do JavaScript.
Escrevi um intérprete simples baseado na web esta tarde usando Twisted.web. Basicamente, você envia um bloco de código Python por meio de um formulário, e o cliente vem e o pega e executa. Eu quero ser capaz de fazer uma mensagem pop-up simples, sem ter que reescrever um monte de código clichê wxPython ou TkInter todas as vezes (já que o código é enviado por meio de um formulário e depois desaparece).
Eu tentei tkMessageBox:
import tkMessageBox
tkMessageBox.showinfo(title="Greetings", message="Hello World!")
mas isso abre outra janela em segundo plano com um ícone tk. Eu não quero isso. Eu estava procurando algum código wxPython simples, mas sempre exigia configurar uma classe e inserir um loop de aplicativo, etc. Não existe uma maneira simples e fácil de criar uma caixa de mensagem em Python?
Você já olhou para easygui ?
fonte
Além disso, você pode posicionar a outra janela antes de retirá-la para que posicione sua mensagem
fonte
O código que você apresentou está bom! Você só precisa criar explicitamente a "outra janela em segundo plano" e ocultá-la, com este código:
Bem antes de sua caixa de mensagens.
fonte
O módulo PyMsgBox faz exatamente isso. Possui funções de caixa de mensagem que seguem as convenções de nomenclatura do JavaScript: alert (), confirm (), prompt () e senha () (que é prompt (), mas usa * quando você digita). Essas chamadas de função são bloqueadas até que o usuário clique no botão OK / Cancelar. É um módulo Python puro de plataforma cruzada sem dependências.
Instale com:
pip install PyMsgBox
Uso de amostra:
Documentação completa em http://pymsgbox.readthedocs.org/en/latest/
fonte
AssertionError: Tkinter is required for pymsgbox
pip
, mas na verdade parte das libs são instaladas de outra maneira - usando o gerenciador de pacotes do sistema. Então instaleipython-tk
usando meu gerenciador de pacotes. Estou usando Python 2.7 no Debian.No Windows, você pode usar ctypes com a biblioteca user32 :
fonte
No Mac, a biblioteca padrão do python tem um módulo chamado
EasyDialogs
. Também existe uma versão do Windows (baseada em ctypes) em http://www.averdevelopment.com/python/EasyDialogs.htmlSe é importante para você: ele usa diálogos nativos e não depende do Tkinter como o já mencionado
easygui
, mas pode não ter tantos recursos.fonte
O último número (aqui 1) pode ser alterado para alterar o estilo da janela (não apenas botões!):
Por exemplo,
vai dar isso :
fonte
Usar
A janela mestre deve ser criada antes. Isso é para Python 3. Isso não é para wxPython, mas para tkinter.
fonte
fonte
Além disso, você pode posicionar a outra janela antes de retirá-la para que posicione sua mensagem
Observação: esta é a resposta de Lewis Cowles apenas para Python 3ified, uma vez que tkinter mudou desde python 2. Se você deseja que seu código seja compatível com backwords, faça algo assim:
fonte
Não é o melhor, aqui está minha caixa de mensagem básica usando apenas tkinter.
fonte
confira meu módulo python: pip install quickgui (requer wxPython, mas não requer conhecimento de wxPython) https://pypi.python.org/pypi/quickgui
Pode criar qualquer número de entradas, (proporção, caixa de seleção, caixa de entrada), organizá-los automaticamente em um único gui.
fonte
Uma versão recente da caixa de mensagem é o módulo prompt_box. Possui dois pacotes: alerta e mensagem. A mensagem oferece maior controle sobre a caixa, mas leva mais tempo para digitar.
Exemplo de código de alerta:
Exemplo de código de mensagem:
fonte
Módulo ctype com threading
Eu estava usando a caixa de mensagens tkinter, mas meu código travaria. Eu não queria descobrir por que, então, usei o módulo ctypes .
por exemplo:
eu peguei aquele código de Arkelis
Eu gostei de não travar o código, então trabalhei nisso e adicionei um threading para que o código depois fosse executado.
exemplo para o meu código
para estilos de botão e números de ícone:
fonte
Você pode usar
pyautogui
oupymsgbox
:Usar
pymsgbox
é o mesmo que usarpyautogui
:fonte