Python - отображение окна сообщения, которое может быть закрыто в коде (без вмешательства пользователя) - PullRequest
2 голосов
/ 12 января 2012

Я создаю тестовые сценарии с использованием Python.Мне нужно, чтобы сообщение отображалось пользователю, пока скрипт продолжает работать.Это должно иметь некоторое обновление статуса, например: «Сохранение результатов теста», которое не должно ждать, пока пользователь нажмет «ОК».По сути, мне нужно создать сообщение, которое всплывает и закрывается без необходимости делать это пользователю.

В настоящее время я использую модуль easygui для добавления GUI. Easygui можно использовать для создания таких окон сообщений, но они не могут быть закрыты в коде и должны ждать, пока пользователь закроет их, чтобы скрипт продолжил работу.

Заранее спасибо за ваше время и помощь.

Кавита

Ответы [ 2 ]

1 голос
/ 13 января 2012

Чтобы принудительно удалить по таймауту окно сообщения, созданное с помощью easygui, вы можете использовать метод .after():

from Tkinter    import Tk
from contextlib import contextmanager

@contextmanager
def tk(timeout=5):
    root = Tk() # default root
    root.withdraw() # remove from the screen

    # destroy all widgets in `timeout` seconds
    func_id = root.after(int(1000*timeout), root.quit)
    try:
        yield root
    finally: # cleanup
        root.after_cancel(func_id) # cancel callback
        root.destroy()

Пример

import easygui

with tk(timeout=1.5):
    easygui.msgbox('message') # it blocks for at most `timeout` seconds

easygui не очень подходит для вашеговариант использования.Рассмотрим unittestgui.py или Дженкинс .

0 голосов
/ 12 января 2012

Если вы начали создавать графический интерфейс, вы сможете использовать функцию textbox().Текстовое поле может использоваться как место для ваших сообщений о состоянии, вместо того, чтобы отображать отдельное диалоговое окно.

Я получил следующее описание textbox() здесь :

текстовое поле (msg = '', title = '', text = '', кодовое поле= 0)

Отображение некоторого текста пропорциональным шрифтом с переносом строк при переносе слов.Эта функция подходит для отображения общего письменного текста.Параметр text должен быть строкой или списком или кортежем строк для отображения в текстовом поле.

...