Tkinter python увеличить окно
Я хочу инициализировать окно как максимизированное, но я не могу узнать, как это сделать. Я использую python 3.3 и Tkinter 8.6 для Windows 7. Я думаю, что ответ здесь: http://www.tcl.tk/man/tcl/TkCmd/wm.htm#m8
но я понятия не имею, как ввести его в мой python script
Кроме того, мне нужно получить ширину и высоту окна (как максимально развернутые, так и если пользователь снова масштабирует его), но я думаю, что могу просто найти это сам.
Ответы
Ответ 1
Если вы хотите установить для полноэкранного атрибута значение True, это будет так же просто, как:
root = Tk()
root.attributes('-fullscreen', True)
Однако он не отображает строку заголовка. Если вы хотите сохранить его видимым, вы можете изменить размер элемента Tk с помощью метода geometry()
:
root = Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.geometry("%dx%d+0+0" % (w, h))
С помощью winfo_width()
и winfo_height()
вы можете получить ширину и высоту или окно, а также вы можете привязать обработчик события к событию <Configure>
:
def resize(event):
print("New size is: {}x{}".format(event.width, event.height))
root.bind("<Configure>", resize)
Ответ 2
Вы можете сделать это, позвонив
root.state('zoomed')
Ответ 3
Для отображения максимального окна с заголовком используйте атрибут "увеличенный"
root = Tk()
root.attributes('-zoomed', True)
Ответ 4
Первый подход - использовать root.state('zoomed')
, но не должен быть общедоступным. Он работает на Windows и на моей машине Ubuntu. Однако под моей машиной Arch это не так.
Второй - сначала получить maxsize, а затем установить геометрию вручную, например:
m = root.maxsize()
root.geometry('{}x{}+0+0'.format(*m))
Это работает на большинстве машин, но не на всех. Например, под моей Arch maxsize()
возвращает (1425, 870)
, тогда как реальная геометрия максимального окна должна быть (1440, 848)
. Таким образом, вы также не могли положиться на это.
И третий, на мой взгляд, лучший подход - использовать root.wm_attributes('-zoomed', 1)
. Он универсально доступен и кажется самым безопасным. На некоторых машинах можно масштабировать только по ширине или по высоте, но по сравнению с предыдущим методом это никогда не даст вам окна частично на экране.
Наконец, если вы хотите полноэкранное, а не только увеличенное окно, используйте root.wm_attributes('-fullscreen', 1)
. Он обеспечивает естественную связь с поведением диспетчера окон, тем самым работая намного лучше, чем играя с overrideredirect
и настраивая геометрию вручную (что на некоторых платформах может привести к неуправляемому окну, которое может быть закрыто только собственным интерфейсом или убить процесс, не будет отображаться на панели задач и т.д.)
Ответ 5
Самый пифонический "root.wm_state('zoomed')
, как упоминается @J.F.Sebastian
Ответ 6
Я нашел это на другом сайте:
import Tkinter
MyRoot = Tkinter.Tk()
MyRoot.state("zoomed")
MyRoot.mainloop()
Это решило мою проблему.
Ответ 7
С TkAgg в качестве бэкэнда это единственная комбинация, которая максимизирует окно без полноэкранного режима:
win_manager = plt.get_current_fig_manager()
win_manager.window.state('zoomed')
win_manager.full_screen_toggle()