2013-07-30 3 views
0

Я написал небольшую утилиту python, которая контролирует скорость ввода, используя pyxhook для подключения событий клавиатуры и таймер потока, чтобы обновить мои слова в минуту.Как добавить простой неинтерактивный gui в мое приложение python?

Прямо сейчас он просто печатает на терминал каждые 2 секунды.

Как я могу заставить это появиться в небольшом окне gui-on-top?

Я пробовал играть с tkinter, но функция mainloop() не любит мой прослушиватель клавиш и таймер. Кажется, я могу запускать gui ИЛИ мои обработчики событий, но не оба.

К сожалению, я не думаю, что могу использовать keyhandler в tkinter, так как я хочу захватить события из других окон.

Любые предложения?

+0

Вы могли бы попробуйте поместить компоненты в отдельные потоки и связать их друг с другом через одну или несколько очередей необходимо. – martineau

+0

Моя первая мысль заключалась в том, чтобы написать данные pyxhook в трубу и прочитать ее с Tkinter. Как ни странно, быстрый поиск привел к [нитям и очередям] (http://mail.python.org/pipermail/python-list/2012-December/637093.html). Существует также [использование Python и Tkinter для захвата вывода сценария] (http://www.executionunit.com/blog/2012/10/26/using-python-and-tkinter-capture-script-output/), но я не знаю, как это будет играть с обработчиками событий pyxhook. –

+0

Вы можете обратиться к этому, http://stackoverflow.com/questions/2883205/freezing-a-dual-mode-gui-and-console-application-using-cx-freeze. Может быть полезно. – cfh008

ответ

1

Я не знаю, как это сделать в tk, но в последнее время я использую PySide, и я знаю, что вы можете это использовать.

Один из способов сделать это в pyside будет с двумя классами, работающими в отдельных потоках, которые обмениваются данными с помощью сигнала Qt & слот-механизм, доступный в pyside. Один класс будет подкласса QThread & получить методы, которые запускают существующий код &, передавать данные через сигналы в класс Ui. Второй класс будет для ваших элементов gui. он должен вызвать экземпляр первого класса, подключить сигналы & слотов, затем запустить его & начните рисовать дисплей.

ресурсы, если вы идете PySide маршрут:

Смежные вопросы