Как задать размер окна в tkinter
Основным компонентом графических программ является окно. Затем в окно добавляются все остальные компоненты графического интерфейса. В Tkinter окно представлено классом Tk . Например, создание окна:
root = Tk()
Для отображения окна и взаимодействия с пользователем у окна вызывается метод mainloop()
from tkinter import * root = Tk() root.mainloop()
Класс Tk обладает рядом методов и атрибутов, которые позволяют установить различные аспекты окна. Некоторые из них.
Размеры и начальная позиция окна
По умолчанию окно имеет некоторые стандартные размеры. Для установки размеров используется метод geometry() . Например, определение окна с шириной в 300 единиц и высотой 250 единиц:
from tkinter import * root = Tk() root.geometry("300x250") root.mainloop()
По умолчанию окно позиционируется в верхний левый угол экрана с небольшим смещением. Но мы можем изменить его положение, передав нужные значения в метод geometry() :
from tkinter import * root = Tk() root.geometry("300x250+400+200") root.mainloop()
Теперь строка в методе geometry имеет следующий формат: «Ширина x Высота + координатаX + координатаY». То есть при запуске окно шириной в 300 единиц и высотой 250 единиц будет находиться на 400 пикселей вправо и на 200 пикселей вниз от верхнего левого угла экрана.
Для получения данных о размере и позиции также можно использовать метод geometry() , который возвращает данные значения в виде строки в формате «widthxheight+x+y»:
from tkinter import * root = Tk() root.geometry("300x250+400+200") root.update_idletasks() print(root.geometry()) # "300x250+400+200" root.mainloop()
Чтобы приложение еще до метода mainloop() принименило для окна переданные ему значения по ширине, высоте и позиции, вызывается метод root.update_idletasks() . В итоге вызов root.geometry() возвратить строку «300×250+400+200»
По умолчанию мы можем изменять размеры окна. Тем не менее иногда может потребоваться сделать размер окна фиксированным. В этом случае мы можем использовать метод resizable() . Его первый параметр указывает, может ли пользователь растягивать окно по ширине, а второй параметр — можно ли растягивать по высоте. Чтобы запретить растягивание по какой-либо стороне, необходимо для соответствующего параметра передать значение False . Например, запретим какое-либо изменение размеров:
from tkinter import * root = Tk() root.geometry("300x250") root.resizable(False, False) root.mainloop()
Также можно установить минимальные и максимальные размеры окна:
root.minsize(200,150) # минимальные размеры: ширина - 200, высота - 150 root.maxsize(400,300) # максимальные размеры: ширина - 400, высота - 300
Установка заголовка
По умолчанию заголовок окна — «tk». Для установки заголовка применяется метод title() , в который передается текст заголовка:
from tkinter import * root = Tk() root.title("Hello METANIT.COM") root.geometry("300x250") root.mainloop()

Установка иконки
Перед заголовком отображается иконка. По умолчанию это иконка пера. С помощью метода iconbitmap() можно задать любую другую иконку. Например, определим в одной папке с файлом приложения какой-нибудь файл с иконкой, допустип, он называется «favicon.ico» и используем его для установки иконки:
from tkinter import * root = Tk() root.title("Hello METANIT.COM") root.iconbitmap(default="favicon.ico") root.geometry("300x250") root.mainloop()
через параметр default в метод iconbitmap передается путь к иконки. В данном случае файл иконки располагается с файлом приложения в одной папке, поэтому в качестве пути указывается просто имя файла.

В качестве альтернативы для установки иконки также можно было бы использовать метод iconphoto()
from tkinter import * root = Tk() root.geometry("250x200") root.title("Hello METANIT.COM") icon = PhotoImage(file = "icon2.png") root.iconphoto(False, icon) root.mainloop()
Первый параметр метода iconphoto() указывает, надо ли использовать иконку по умолчанию для всех окон приложения. Второй параметр — объект PhotoImage, который собственно и устанавливает файл изображения (здесь файл «icon2.png)
Однако что, если мы хотим, чтобы окно вообще не имело иконки? В этом случае можно определить прозрачную иконку и также ее подключать. Можно это сделать также динамически без наличия реального файла:
from tkinter import * import tempfile, base64, zlib ICON = zlib.decompress(base64.b64decode("eJxjYGAEQgEBBiDJwZDBysAgxsDAoAHEQCEGBQaIOAg4sDIgACMUj4JRMApGwQgF/ykEAFXxQRc=")) _, ICON_PATH = tempfile.mkstemp() with open(ICON_PATH, "wb") as icon_file: icon_file.write(ICON) root = Tk() root.title("Hello METANIT.COM") root.geometry("300x250") root.iconbitmap(default=ICON_PATH) root.mainloop()
В данном случае создается временный файл иконки в памяти.
Перехват закрытия окна
from tkinter import * def finish(): root.destroy() # ручное закрытие окна и всего приложения print("Закрытие приложения") root = Tk() root.geometry("250x200") root.title("Hello METANIT.COM") root.protocol("WM_DELETE_WINDOW", finish) root.mainloop()
Первый параметр метода protocol() представляет имя события, в данном случае это «WM_DELETE_WINDO». Второй параметр представляет функцию, которая вызывается при возникновении события. Здесь эта функция finish() , в котором с помощью метода destroy() вручную вызываем закрытие окна (а с ним и всего приложения), а затем выводим на консоль некоторое сообщение.
Атрибуты окна
С помощью специального метода attributes() можно установать отдельные атрибуты окна, для которых нет специальных методов. В качестве первого параметра метод принимает название атрибута, которое предваряется дефисом. А второй параметр — значение для этого атрибута. Например, растяжение окна на весь экран:
root.attributes("-fullscreen", True)
Здесь атрибуту fullscreen передается значение True, благодаря чему устанавливается полноэкранный режим.
Другой пример — установка прозрачности с помощью атрибута alpha :
root.attributes("-alpha", 0.5)
Значение 0.5 указывает на полупрозрачность.
Третий пример — отключение верхней панели окна (за исключением заголовка и крестика для закрытия):
root.attributes("-toolwindow", True)
Закрепить размер окна tk
Закрепить часть области окна при скроллинге
Здравствуйте, Пытаюсь Закрепить часть области окна при скроллинге, ну то есть, знаете, как в.
Закрепить элемент по границе окна браузера, CSS
столкнулся с проблемой нужно что бы #footer закрепился по нижней части браузера и остовался там но.
Как ограничить размер ListBox размером окна (расползается на весь размер)?
Вроде простой вопрос, а что то закопался. Есть Page, в ней Grid, в нем ListBox Так вот когда.
Am I evil? Yes, I am!
![]()
![]()
18966 / 9661 / 2710
Регистрация: 21.10.2017
Сообщений: 21,461

Сообщение было отмечено hasker2 как решение
Решение
root.resizable(width=False, height=False)
40 / 42 / 16
Регистрация: 15.01.2021
Сообщений: 432
iSmokeJC, спасибо
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Размер DIV под размер окна браузера
Доброго времени суток. Прошу помощи, новичок в JS. Имеется div с Как указать ему.
Подстроить размер окна относительно размера другого окна в X11
Есть два риложения, у обоих устанавливается атрибут WA_X11NetWmWindowTypeaDock. Сначала запускается.
Когда изменяю размер окна, элементы лагают. После перезагрузки с тем же размером окна все ок
Вообщем такая проблема. На странице все ок, если изменяю размер окна, то элементы соскакивают в.
Как закрепить блок рядом с другим при изменении размера окна браузера?
Вверху страницы есть div в роли кнопки, в самом внизу скрытый div с контентом. Нажимаю на кнопку и.
Характеристики окна tkinter
, могу ли я где-то в середине программы из self.root получить размеры (width, height) и положение (left, top) этого окна?
— Наверно я слишком многого хочу ? .
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Координаты tkinter окна
import os from tkinter import * root = Tk() root.geometry(‘400×400+400+400’).

Диалоговые окна в Tkinter Python 2.X
Нужен аналог вот этого: from tkinter.filedialog import * только для второго питона.
tkinter без главного окна
Как мне запустить этот код без главного tkinter-окна? from tkinter.filedialog import.
[Tkinter] Изменить размер окна
Какой функцыей изменить размер окна в tkinter
Зависание инициализации окна Tkinter + Paramiko
Добрый день. Столкнулся с такой проблемой. Через по SSH делаю подключение и выполняю команду.
Как задать размер окна в tkinter
На этом шаге мы методы, используемые для изменения размеров окна .
resize (< Ширина >, < Высота >) — изменяет текущий размер окна. Если содержимое окна не помещается в установленный размер, то размер будет выбран так, чтобы компоненты поместились без искажения при условии, что используются менеджеры геометрии. Следовательно, заданный размер может не соответствовать реальному размеру окна. Если используется абсолютное позиционирование, то компоненты могут оказаться наполовину или полностью за пределами видимой части окна. В качестве параметра можно также указать экземпляр класса QSize из модуля QtCore . Пример:
window.resize (100, 70) window.resize (QtCore.QSize(100, 70))
window.setGeometry (100, 100, 100, 70) window.setGeometry (QtCore.QRect(100, 100, 100, 70))
window.setFixedSize (100, 70) window.setFixedSize (QtCore.QSize(100, 70))
window.setMinimumSize (100, 70) window.setMinimumSize (QtCore.QSize(100, 70))
window.setMaximumSize (100, 70) window.setMaximumSize (QtCore.QSize(100, 70))
window.setBaseSize (500, 500) window.setBaseSize (QtCore.QSize(500, 500))
На следующем шаге мы перечислим методы, используемые для получения размеров окна .