2014-11-17 6 views
1

Я запускаю консольное приложение Python (консоль Linux, приложение, написанное на Python), где в рамках запуска запускается подпроцесс Python GUI (wx) во многих разных местах , Можно ли запустить wx GUI без кражи фокуса с консоли, чтобы пользователь мог беспрерывно использовать консольное приложение? Любой способ предотвратить это, будь то с стороны приложения Python GUI, из консольного приложения, которое запускает интерфейс GUI или с Linux?Python: приложение Python WX GUI от кражи фокуса с консоли

Спасибо

ответ

0

Linux - это особенно разнообразная система, когда речь идет о графических интерфейсах. Помимо десятков наборов графических интерфейсов и фреймворков, существует не менее дюжины обычно используемых оконных менеджеров, которые являются частью системы, контролирующей фокус.

Хорошей новостью является то, что существует стандарт: Extended Window Manager Hints.

Хотя я не буду притворяться, что прочитал все это, я думаю, что вы не можете безоговорочно отказаться от фокуса перейти в новое окно, и есть много веских причин для этого.

Что вы, , просто переместите фокус обратно на консоль, когда вы закончите - если есть надежный способ ее идентификации, например, имя ПИД или имя окна. Вы можете проверить wmctrl, который является инструментом, который может взаимодействовать с любым оконным менеджером, который реализует стандарт EWMH. Вы можете взаимодействовать с ним, например, с помощью subprocess.

+0

Спасибо, попробуем его также –

0

Я обнаружил хак, который работает хотя бы в Windows, вы можете попробовать его в Linux. Перед показом нового кадра отключите его.

frame.Disable() 
frame.Show() 
frame.Enable() 
+0

Спасибо, попробуем его –

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