Как сделать окно на весь экран tkinter

Обновлено: 18.05.2024

Подскажите, пжлст, какие свойства\методы использовать для растяжения главного окна root = Tk() на весь экран, как его покрасить в зеленый цвет и как поменять размер шрифта в виджете label = Label(root, text='MESSAGE').pack(expand='yes')?

Щас читаю книженцию, просто может не попаду сразу на нужную информацию.
Спс.

tkinter размер главного окна, его цвет, и размер метки


P.S. Еще можно перехватить разрешение экрана и назначить размер
root.geometry(“ДлинаxШирина+отступ_от_левой_стороны+отступ_от_правой_стороны”).

Отредактировано 4kpt (Май 15, 2013 10:45:30)

tkinter размер главного окна, его цвет, и размер метки

спасибо за подсказку, использовал .state('zoomed').
Щас выглядит так:

Теперь возник вопрос: как сделать для виджета label = Label(root_widg, text=text) автоперенос по строкам, если строка упёрлась в границу.

Мне в последствии нужно будет менять текст виджета и его цвета.
Паршу JSON, если нахожу вопросы с форума без ответа - вывожу красный со списком всех этих вопросов, если не нахожу - вывожу зеленый с приятным текстом - “всё в порядке”.
Сценарий будет запускаться с некоторой периодичностью, как бы системка простого уведомления.

tkinter размер главного окна, его цвет, и размер метки

По строкам… Это нужно пилить самому. Механизмы отсутствуют.
Есть еще один виджет, но он не различает слов, а режет по размеру:

P.S. Есть вариант использовать виджет Text, который все делает правильно :) Но и его придеться допилить :(

Отредактировано 4kpt (Май 15, 2013 11:26:57)

tkinter размер главного окна, его цвет, и размер метки

Для расширения окна на весь экран поменял код, теперь так:

Да уж , большая это тема - GUI. быстро не потянуть.
Щас еще и клавишу Escape надо прилепить для выхода из окна и еще при выходе из окна закончить поток threading.Timer(10, output)

tkinter размер главного окна, его цвет, и размер метки

buddha
Еще в ХР есть глюк. Если использовать полное разрешение экрана, может не работать переключение шрифторв. Посему рекомендую

4 пикселя из собственного опыта :)

Еще. Это - лучше не делать

Отредактировано 4kpt (Май 15, 2013 14:17:01)

tkinter размер главного окна, его цвет, и размер метки

А есть возможность выровнять текст в виджете Label по краю левому?

нашел параметр Label(justify='left')

Отредактировано buddha (Май 15, 2013 15:40:36)

tkinter размер главного окна, его цвет, и размер метки

4kpt
Еще. Это - лучше не делать
root_widg.overrideredirect(1)
Оконный менеджер игнорирует это окно. При переключении между окнами оно пропадет…


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

Отредактировано buddha (Май 15, 2013 15:35:08)

tkinter размер главного окна, его цвет, и размер метки

Отредактировано 4kpt (Май 15, 2013 15:44:57)

tkinter размер главного окна, его цвет, и размер метки

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

В этом уроке мы расскажем, как создавать полноэкранное окно в Tkinter, а также как переключать и выходить из полноэкранного режима.

Windows root.attributes('-fullscreen', True) для создания полноэкранного режима в Tkinter

tk.Tk.attributes устанавливает атрибуты, специфичные для платформы. Атрибуты в Windows,

  • -alpha
  • -transparentcolor
  • -disabled
  • -fullscreen
  • -toolwindow
  • -topmost

-fullscreen указывает, является ли окно полноэкранным или нет.

F11 привязывается к функции toggleFullScreen .

Полноэкранный режим в этой функции обновляется до переключенного состояния.

Функция quitFullScreen выходит из полноэкранного режима, установив -fullscreen в False .

Мы могли бы использовать функцию lambda , чтобы сделать решение более простым.

Она привязывает функцию lambda к F11 , где текущее полноэкранное состояние может быть прочитано self.window.attributes("-fullscreen") , которая возвращает состояние, если в методе не задано ни одного значения.

Переменная состояния fullScreenState нам больше не нужна, если мы будем следовать этому подходу.

Ubuntu root.attributes('-zoomed', True) для создания полноэкранного режима в Tkinter

Атрибут -fullscreen существует только в Windows, но не в Linux или macOS. Ubuntu имеет сопоставимый атрибут -zoomed для установки окна в полноэкранном режиме.

Отображение полноэкранного режима с помощью Панели инструментов

Полноэкранный режим, показанный в приведенных выше кодах, делает панель инструментов невидимой. Если необходимо показать панель инструментов в окне, то геометрия окна будет совпадать с размером монитора.

winfo_screenwidth() и winfo_screenheight() получают ширину и высоту монитора.

Он устанавливает размер окна GUI, равный ширине и высоте монитора, используя метод geometry методика.

Сопутствующая статья - Tkinter Geometry


report this ad

In this Tutorial will we learn about Python Tkinter window size also we will cover these topics.

  • Configure window size and position in Python Tkinter.
  • How to set the window size to full screen in Python Tkinter?
  • How to set the fixed size of the window in Python Tkinter?
  • How to lock the window size in Python Tkinter?
  • How to set minimum window size?
  • How to set maximum window size?

Python Tkinter Window Size and Position

  • Window size refers to the height and width of the window.
  • Window position refers to the appearing place of the window on the screen.
  • In this section, we will learn how to adjust the window & how to position the window in Python Tkinter.
  • geometry is the method used for both purposes.

Syntax:

  • width_size : accepts only integer value & determines the horizontal space of the window.
  • height_size: accepts only integer value & determines the vertical space of the window.
  • x_position: accepts only integer value & pushes the window in the vertical position.
  • y_position: accepts only integer value & pushes the window in the horizontal position.

Code:

In this code, the window is created with 350 widths and 450 height. It is positioned at x = 700 & y=200. So everytime code will be run, it appears slightly right to the center.

Output:

In this output, the window has appeared slightly to the right from the centre.

Python Tkinter Window Size and Position

Python Tkinter Window Size Fullscreen

  • In this section, we will learn how to set Python Tkinter window size to full screen.
  • There are a couple of ways to set the application to fullscreen by default.
  • The first method requires the resolution of the screen.
  • If you know the screen resolution then you can directly provide height & width. Like in, my case the resolution is 1920×1080 so,

Here, 1920 is the width of the window and 1080 is the height.

  • Another way is to set the attribute of the parent window to True for full screen.
  • In this method, the screen is set to full screen irrespective of the display size.
  • In other words, the application goes to full screen on all the devices.
  • The drawback of using this is you have to manually create close and other buttons.

Code:

In this code, we have displayed the example of the second method wherein we have set the full screen to True for the attribute method.

Output:

In this output, Python tkinter is in full screen mode. Also you won’t notice regular toolbars for closing , minimising or maximising the screen.

python tkinter windows fullscreen

Python Tkinter Fixed Window Size

  • While working on the application, at times, we want to fix the window size so that widgets appear at the same place where you have fixed them.
  • So, in this section, we will learn how to set fixed window size in Python Tkinter.
  • To do so, we will pass (0,0) in the resizable method. Here 0,0 refers to False for width & Height.
  • resizable method instructs window manager if this window can be resized or not.
  • It accepts only boolean values.

Syntax:

All these expressions do the same thing. You can use anyone method out of these.

Code:

In this code, we have fixed the size of a window. This method is also called locking of screen. User will not allowed to change the size of the screen.

Output:

In this output, there are two images displayed. first image displays the regular window wherein user can change the size of window by clicking on the maximisie square button on the other hand, the other boxhas locked window. The size of the window is fixed and user won’t be able to change it.

python tkinter windows fixed size

Python Tkinter Lock Window Size

  • While working on the application, at times, we want to fix the window size so that widgets appear at the same place where you have put them.
  • So, in this section, we will learn how to lock window size in Python Tkinter.
  • Locking window size simply means the user won’t be able to change the window size.
  • To do so, we will pass (0,0) in the resizable method. Here 0,0 refers to False for width & Height.
  • resizable method instructs window manager if this window can be resized or not.
  • It accepts only boolean values.
  • This is the same as our previous section on the python Tkinter fixed window size.

Syntax:

All these expression do the same thing. You can use anyone method out of these.

Output:

In this output, window is locked that means it can’t be resized. First image on the left is an example of regular window wherein user can change the size of the window but the side side image has maximise button disabled that means user is not allowed to change the size of the window.

python tkinter windows fixed size

Another way of locking window size is by providing minsize() and maxsize() same as geometry size. We have covered about these in our next section.

Python Tkinter Minimum Window Size

  • In this section, we will learn to set the minimum window size in Python Tkinter.
  • The minimum window size determines the number of windows that can be shrunk. Without this user can shrink the window to any level.
  • minsize() method is used to set the limit after which the window won’t shrink.

Syntax:

  • width_minsize() accepts integer value & it stops the shrink coming from East to west direction.
  • height_minsize() accepts integer value & stops the shrink coming from south to North direction.

Code:

In this code, we have allowed users to shrink the window for only 50 pixels only. Ask you can see the geometry is 300×400 and minsize is 250 for width & 350 for height. the difference for both is 50. So window can be shrunk 50 from the left to right & 50 from bottom to top.

Output:

  • In this output, three pictures are displayed. The first one on the top depicts the original form of the window when code is run.
  • The second picture on the left side depicts that when a user tries to reduce or shrink the window from the right side to the left side then he is only able to reduce it for 50 pixels same happens with the height.
  • So this is how we restrict the window shrunk in Python Tkinter.

python tkinter window minsize

Python Tkinter Max Window Size

  • In this section, we will learn to set the maximum window size in Python Tkinter.
  • The maximum window size determines the maximum amount of window expansion.
  • Without this user can expand the window to any level.
  • maxsize method is used to set the limit after which the window won’t expand.

Syntax:

  • width_maxsize() accepts integer value & it stops the expansion going from west to east direction.
  • height_maxsize() accepts integer value & stops the expansion going from North to South direction.

Code:

In this code, we have allowed users to expand the window size for only 50 pixels only. as you can see the geometry is 300×400 and maxsize is 350 for width & 450 for height. the difference for both is 50. So window can be expand to 50 from the right to left & 50 from top to bottom.

Output:

  • In this output, three pictures are displayed. The first one on the top depicts the original form of the window when code is run.
  • The second picture on the left side depicts that when a user tries to expand the window size from the left side to the right side then he is only able to expand it for 50 pixels same happens with the height.
  • So this is how we restrict the window expansion in Python Tkinter.

python tkinter window maxsize

You may like the following Python Tkinter tutorials:

In this tutorial, we have learned about different ways of configuring Python Tkinter window size. Also, we have covered these topics.

  • Configure window size and position in Python Tkinter.
  • How to set the window size to full screen in Python Tkinter.
  • How to set the fixed size of the window in Python Tkinter.
  • How to lock the window size in Python Tkinter.
  • How to set minimum window size.
  • How to set maximum window size.

Entrepreneur, Founder, Author, Blogger, Trainer, and more. Check out my profile.

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

Однако, используя это, я заметил, что всегда есть часть окна tkinter, которая отрезана от панели задач в нижней части экрана. Я считаю, что это немного раздражает, особенно если у вас есть ярлыки или другие подобные функции, которые вы хотите видеть внизу.

Есть ли способ обойти это? Я знаю, что мы могли бы вычесть коэффициент смещения из высоты, чтобы учесть возможную панель задач в нижней части экрана, но тогда это неудобно смещает холст tkinter.

В Windows, AFAIK, у Tkinter нет возможности напрямую получить эту информацию, но, если вместо явного перехода в полноэкранный режим вы установите для состояния окна масштабирование, он выберет для вас правильный размер. Позвольте мне попытаться раскопать подробности.

На самом деле это сработало прекрасно. Я использовал root.state ("масштабирование"). Это было намного проще, чем я ожидал.

1 ответ

Я считаю, что на самом деле нет способа получить информацию о панели задач из Tkinter в Windows.

Но не обязательно. Если вы установите для главного окна состояние «увеличено», Tkinter попросит Windows развернуть ваше окно до максимума, а Windows позаботится о том, чтобы вы разместились на панели задач, а также обработает любые другие странные украшения, которые могут быть у вас, и обработает автоматическое скрытие. панели задач и т. д.

Насколько я могу судить, Tkinter не документирует это значение ( state документы в книге Tkinter говорят, что разрешены только «нормальный», «иконический», «отозвать» и «значок»).

Но, как это часто бывает, если вы обратитесь к документации Tcl / Tk, вы обнаружите, что документация Tkinter просто неполная. Даже в руководстве упоминается:

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

В справочной документации Tk для wm state говорится:

… Нормальный, иконический, удаленный, значок или (только для Windows и Mac OS X) увеличенный.

Кроме того, IIRC, вы можете использовать «zoom» для «увеличенного» (а также «remove» для «снятого», «iconified» или «iconify» для «iconic» и «iconwindow» для «icon»), но Tk пытается быть непоследовательно дружелюбным.

Хотя root.state('zoomed') здесь абсолютно правильный ответ, на самом деле есть способ получить размер экрана, исключая панель задач в окнах, используя win32api GetMonitorInfo() , который дает "рабочую область" экрана. Я использовал его в своем ответе на этот вопрос. Обратите внимание, что вычитание только части высоты для компенсации панели задач все равно не даст желаемого результата (за исключением случая использования overrideredirect ), поскольку граница окна все еще имеет размер, указанный.

@fhdrsdg: Да, поэтому я сказал «изнутри Tkinter». Есть целая страница MSDN о правильном способе имитации того же самого, что и в максимальном режиме, но не в максимальном режиме, и вы определенно можете сделать все это из pywin32 (или просто ctypes, если вы предпочитаете писать более уродливый код, чем требовать дополнительных зависимостей ).

Ах да, пропустил ту часть. Я согласен, что только с Tkinter это невозможно. У вас случайно есть ссылка на эту страницу MSDN? Хотя я, вероятно, никогда не воспользуюсь им, я бы хотел это прочитать.

@fhdrsdg: нет ссылки; Я знаю, что он существует только потому, что много лет назад (2000 / дни XP) я работал над приложением для замены панели задач, которое должно было заставить все те же API работать одинаково, и я был рад, что они все задокументировали. (Хотя я полагаю, что это просто доказывает, что он когда-то существовал, а не то, что он существует . но мой опыт показывает, что Microsoft не так плоха, как некоторые компании cough Apple cough в искоренении старая документация без уважительной причины.)

В этом уроке рассмотрим основные настройки окон, в которых располагаются виджеты. Обычные окна в Tkinter порождаются не только от класса Tk , но и Toplevel . От Tk принято создавать главное окно. Если создается многооконное приложение, то остальные окна создаются от Toplevel. Методы обоих классов схожи.

Размер и положение окна

По умолчанию окно приложения появляется в верхнем левом углу экрана. Его размер (ширина и высота) определяется совокупностью размеров расположенных в нем виджетов. В случае если окно пустое, то tkinter устанавливает его размер в 200 на 200 пикселей.

С помощью метода geometry можно изменить как размер окна, так и его положение. Метод принимает строку определенного формата.

Первые два числа в строке-аргументе geometry задают ширину и высоту окна. Вторая пара чисел обозначает смещение на экране по осям x и y . В примере окно размерностью 600 на 400 будет смещено от верхней левой точки экрана на 200 пикселей вправо и на 100 пикселей вниз.

Если перед обоими смещениями вместо плюса указывается минус, то расчет происходит от нижних правых углов экрана и окна. Так выражение root.geometry('600x400-0-0') заставит окно появиться в нижнем правом углу.

В аргументе метода geometry можно не указывать либо размер, либо смещение. Например, чтобы сместить окно, но не менять его размер, следует написать root.geometry('+200+100') .

Бывает удобно, чтобы окно появлялось в центре экрана. Методы winfo_screenwidth и winfo_screenheight возвращают количество пикселей экрана, на котором появляется окно. Рассмотрим, как поместить окно в центр, если размер окна известен:

Здесь мы вычитаем половину ширины и высоты окна (по 200 пикселей). Иначе в центре экрана окажется верхний левый угол окна, а не его середина.

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

Метод update_idletasks позволяет перезагрузить данные об окне после размещения на нем виджетов. Иначе geometry вернет строку, где ширина и высота равняются по одному пикселю. Видимо таковы параметры на момент запуска приложения.

По умолчанию пользователь может разворачивать окно на весь экран, а также изменять его размер, раздвигая границы. Эти возможности можно отключить с помощью метода resizable . Так root.resizable(False, False) запретит изменение размеров главного окна как по горизонтали, так и вертикали. Развернуть на весь экран его также будет невозможно, при этом соответствующая кнопка разворота исчезает.

Заголовок окна

По умолчанию с стоке заголовка окна находится надпись "tk". Для установки собственного названия используется метод title .

Если необходимо, заголовок окна можно вообще убрать. В программе ниже второе окно ( Toplevel ) открывается при клике на кнопку, оно не имеет заголовка, так как к нему был применен метод overrideredirect с аргументом True . Через пять секунд данное окно закрывается методом destroy .

Практическая работа

Напишите программу, в которой на главном окне находятся холст и кнопка "Добавить фигуру". Кнопка открывает второе окно, включающее четыре поля для ввода координат и две радиокнопки для выбора, рисовать ли на холсте прямоугольник или овал. Здесь же находится кнопка "Нарисовать", при клике на которую соответствующая фигура добавляется на холст, а второе окно закрывается. Проверку корректности ввода в поля можно опустить.

Курс с примерами решений практических работ: android-приложение, pdf-версия.

Читайте также: