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