Можете ли вы автоматически скрывать фреймы / диалоги, используя wxPython? - PullRequest
1 голос
/ 15 февраля 2010

Я хотел бы создать приложение, которое имеет 3-4 кадра (или окна), где каждый кадр прикреплен / расположен на боковой стороне экрана (например, на панели задач). Когда фрейм неактивен, я бы хотел, чтобы он автоматически скрывался (как это делает панель задач Windows; или док в OSX). Когда я перемещаю указатель мыши в положение на краю экрана, где скрыта рамка, мне бы хотелось, чтобы она снова оказалась в фокусе.

Приложение написано на Python (с использованием wxPython для основных аспектов GUI). Кто-нибудь знает, как это сделать в Python? Я предполагаю, что это, вероятно, зависит от ОС? Если это так, я бы хотел сначала сосредоточиться на Windows.

Я не очень часто занимаюсь программированием GUI, поэтому приношу свои извинения, если это вообще не имеет смысла.

Ответы [ 3 ]

1 голос
/ 16 февраля 2010

Насколько я знаю, для этого ничего не встроено.

Если окно скрыто, хотите ли вы, чтобы оно было полностью невидимым, или может отображаться граница в несколько пикселей? Это был бы простой способ получить событие при наведении мыши. В противном случае вам, возможно, придется использовать что-то вроде pyHook , чтобы получить общесистемные события мыши, чтобы узнать, когда расширить ваше окно.

Здесь также могут быть полезны события EVT_ENTER_WINDOW и EVT_LEAVE_WINDOW, чтобы узнать, когда пользователь вошел / покинул окно, чтобы вы могли развернуть / свернуть его.

Расширение / свертывание может быть сделано путем показа / скрытия окон или изменения их размера. Стандартные оконные функции, ничего особенного.

Кстати, вы можете использовать wx.ClientDisplayRect, чтобы выяснить, где расположить ваше окно. Это даст вам прямоугольник рабочего стола, который НЕ включает панель задач или любые другие панели инструментов, которые есть у пользователя, при условии, что вы хотите избежать дублирования с этими вещами.

0 голосов
/ 05 июля 2017

Я думаю, что вы могли бы просто сделать окно того же размера, что и на рабочем столе, затем сделать некоторое время, зацикливая переменную неактивности в зависимости от положения мыши, а затем срезать таймер для цикла для 4 переменных неактивности. Я лично разработал его так, чтобы, когда они достигают 0 из 15, они меняют размер и положение, чтобы стать табличными, и создают на них кнопку для повторной активации. много технической работы над этим, но легко сделать, если вы поймете это

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

Лично я бы объединил EVT_ENTER_WINDOW и EVT_LEAVE_WINDOW, которые FogleBird упомянул, с wx.Timer. Тогда всякий раз, когда фрейм или диалог неактивны в течение x секунд, вы просто вызываете его метод Hide ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...