2016-07-02 5 views
5

Я понял, что overrideredirect помогает удалить декорации окна по умолчанию, как панель инструментов. Каковы другие ее возможности? Я не очень уверен и не могу найти много документации.

Я работаю над Mac. Использование tkinter Я хочу получить окно, которое остается maxsize и не может быть изменено, что я достиг с использованием геометрии и resizable. Теперь мне нужна гарантия того, что никакие случайные нажатия клавиш моего пользователя не смогут закрыть окно. Будет ли чрезмерная помощь помогать мне в этом? Есть ли альтернатива?Что делает overrideredirect?

ответ

4

Вы можете использовать overrideredirect() и установить его флаг на True. Это отключит ваше окно, которое будет закрыто обычным способом, как указано в приведенной выше ссылке. По штатными средствами, это означает кнопку X и Alt + F4 нажатия клавиши комбинации.

Поскольку вы использовали geometry() и resizable(), вам нужно будет позвонить update_idletasks() т о силе дисплей, который будет обновлен до применения следующей вхолостую.

Вот пример:

import Tkinter as Tk 

root = Tk.Tk() 
root.geometry('200x200+100+100') 
root.resizable(False, False) 
root.update_idletasks() 
root.overrideredirect(True) 
root.mainloop() 

Минусом этого метода: он всегда работает на платформе Microsoft Windows, но он может не работать на некоторых платформах Unix и MacOS.

EDIT:

Вы просили дать разъяснения относительно update_idletasks(), я думаю, что это будет лучше, если я цитирую непосредственно из его документации, как это ясно (но если вы не понимаете эту цитату, пожалуйста, дайте мне знать):

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

Если вы хотите принудительно обновить дисплей до того, как приложение запустится, вызовите метод w.update_idletasks() для любого виджета .

+0

не могли бы вы объяснить, почему в этом случае требуется update_idletasks()? я не совсем понял, что означает «применение следующих простоя». Большое спасибо! – momo

+0

Проверьте мои изменения (и извините за эту позднюю обратную связь, я был в автономном режиме) @momo –

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