2015-04-20 3 views
1

Моей проблемы заключается в следующемTkinter меню виджета: команда, чтобы скрыть меню

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

Проблема заключается в том, что есть возможность щелкнуть пользователем по меню и сохранить его открытым, в то время как приложение настраивает меню. На самом деле меню изменено, но тогда меню может замерзать и оставаться открытым даже после того, как мышь покинет меню. Однако я заметил, что если я выхожу за пределы приложения с помощью мыши, меню efectivelly закрывается, и все возвращается в норму, но пользователь может не знать об этом и может застрять. Во всяком случае, это не интересное поведение. Я думаю, что это ошибка виджета меню, но я не уверен.

Я не могу отключить все меню, потому что есть варианты, которые на самом деле должны быть доступны. Решение было бы командой скрыть меню после настройки его, избегая этой ситуации. Я попробовал использовать метод «unpost», но ничего не произошло.

Есть такая возможность или любое обходное решение, которое может решить мою проблему?

Я оставляю некоторые изображения в вышеупомянутом меню ilustrate моей проблемы:

Нормальной

Normal

Отключения некоторых опций

Disabling some options

"ошибка" ситуация

the "bug" situation

+1

Слишком много, чтобы читать здесь, на мой взгляд. Пожалуйста, уменьшите количество текста и дайте нам свой код, а не скриншоты. – ForceBru

+1

Если вы нашли ответ на свой вопрос, отправьте его как ответ, а не как отредактировать вопрос. – fhdrsdg

+1

Мой код довольно длинный (4000 строк кода), и было бы не видно, что происходит. Таким образом, я решил сначала попробовать этот подход. Но я нашел причину проблемы и отправил ее в качестве ответа. Тем не менее, спасибо за ваше время. @ForceBru –

ответ

2

К счастью, я думаю, что я нашел источник этого неправильного поведения. После настройки меню отобразится другое окно (пользовательское предупреждающее сообщение). Чтобы заставить пользователя обратить внимание на это сообщение, основное внимание было уделено ему, и приложение было вынуждено ждать (используя метод wait_window), пока пользователь не закроет его. не позволяя mainloop скрыть меню, так как он ждал закрытия окна предупреждения, но почему-то невозможно закрыть окно без скрытых меню. Это своего рода ситуация с «приоритетным конфликтом».

enter image description here

решение не использовать этот метод, и меню закрывается по желанию.

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

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