2016-02-10 3 views
0

У меня есть программа PyQt Python, которая имеет QWidget в главном окне. Я добавил 2 разных вида в тот же QWidget. Когда пользователь нажимает кнопку Button1, я показываю view1 и скрываю view2. Когда пользователь нажимает кнопку Button2, я показываю view2 и скрываю view1. Каждый вид имеет свой собственный KeyPressEvent для использования клавиш со стрелками для просмотра через записи в представлении.PyQt: Independent KeyPressEvent между двумя различными видами на форме

Я не хочу, чтобы страницы через записи в обоих представлениях одновременно, мне просто нужно вывести записи активного вида.

Как отключить/включить соответствующий KeyPressEvent, когда соответствующее представление активно. Или это лучший подход?

Извините за отсутствие кода, но это трудно упростить мой рабочий пример.

+0

Почему бы не использовать QStackedLayout и позволить ему выполнять тяжелую работу? http://pyqt.sourceforge.net/Docs/PyQt4/qstackedlayout.html –

+0

Ха-ха ... эта мысль перешла мне на ум, а также с помощью tabwidget И я как раз собирался сделать это, когда ... Я решил это , Простой ответ .. просто setFocus на объект в соответствующем представлении, который только что был видимым. В любом случае, я все равно могу сделать tabwidget. Благодарю. – panofish

ответ

0

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

Решение, приведенное выше, является ответом на вопрос. Тем не менее, я могу отказаться от использования кнопок QAction, чтобы инициировать изменение представлений, использовать tabwidget для изменения представлений.

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