Подтвердить что ты не робот

Tkinter python увеличить окно

Я хочу инициализировать окно как максимизированное, но я не могу узнать, как это сделать. Я использую python 3.3 и Tkinter 8.6 для Windows 7. Я думаю, что ответ здесь: http://www.tcl.tk/man/tcl/TkCmd/wm.htm#m8 но я понятия не имею, как ввести его в мой python script

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

4b9b3361

Ответ 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()