Позиционирование. Place

Последнее обновление: 11.09.2022

Метод place() позволяет более точно настроить координаты и размеры виджета. Он принимает следующие параметры:

  • height и width: устанавливают соответственно высоту и ширину элемента в пикселях

  • relheight и relwidth: также задают соответственно высоту и ширину элемента, но в качестве значения используется число float в промежутке между 0.0 и 1.0, которое указывает на долю от высоты и ширины родительского контейнера

  • x и y: устанавливают смещение элемента по горизонтали и вертикали в пикселях соответственно относительно верхнего левого угла контейнера

  • relx и rely: также задают смещение элемента по горизонтали и вертикали, но в качестве значения используется число float в промежутке между 0.0 и 1.0, которое указывает на долю от высоты и ширины родительского контейнера

  • bordermode: задает формат границы элемента. Может принимать значение INSIDE (по умолчанию) и OUTSIDE

  • anchor: устанавливает опции растяжения элемента. Может принимать значения n, e, s, w, ne, nw, se, sw, c, которые являются сокращениями от North(север - вверх), South (юг - низ), East (восток - правая сторона), West (запад - левая сторона) и Center (по центру). Например, значение nw указывает на верхний левый угол

Установка расположения

Параметры x и y позволяют задать точные параметры расположения относительно верхнего левого угла контейнера:

from tkinter import *
from tkinter import ttk

root = Tk()
root.title("METANIT.COM")
root.geometry("250x200")

btn = ttk.Button(text="Click me")
btn.place(x=20, y=30)

root.mainloop()

В данном случае кнопка относительно верхнего левого угла контейнера спещена на 20 единиц по оси X и на 30 единиц по оси Y:

установка расположения виджета с помощью метода place в Tkinter и Python

Параметры relx и rely также позволяют сместить виджет, но в качестве значения используется число float в промежутке между 0.0 и 1.0, которое указывает на долю от высоты и ширины родительского контейнера:

from tkinter import *
from tkinter import ttk

root = Tk()
root.title("METANIT.COM")
root.geometry("250x200")

btn = ttk.Button(text="Click me")
btn.place(relx=0.4, rely=0.25)

root.mainloop()

В данном случае кнопка смещена относительно верхнего левого угла контейнера на 40% ширины контейнера по оси Х и на 25% высоты контейнера по оси Y.

установка относительных координат виджета с помощью метода place в Tkinter и Python

Anchor

Параметр anchor помещает виджет в определенной части контейнера. Может принимать следующие значения:

  • n: положение вверху по центру

  • e: положение в правой части контейнера по центру

  • s: положение внизу по центру

  • w: положение в левой части контейнера по центру

  • nw: положение в верхнем левом углу

  • ne: положение в верхнем правом углу

  • se: положение в нижнем правом углу

  • sw: положение в нижнем левом углу

  • center: положение центру

Схематически это выглядит следующим образом:

позиционирование виджета в tkinter и python

Стоит отметить, что значение в кавычках для параметра anchor передается в нижнем регистре, без кавычек - в верхнем регистре

btn.pack(anchor=NW)

Например, разместим кнопку в центре окна:

from tkinter import *
from tkinter import ttk

root = Tk()
root.title("METANIT.COM")
root.geometry("250x200")

btn = ttk.Button(text="Click me")
btn.place(relx=.5, rely=.5, anchor="c")

root.mainloop()

При этом все равно устанавливаются относительные координаты, которые примерно соответствуют центру окна, однако сам виджет все позиционируется по центру

Позиционирование элементов  с помощью place в tkinter в Python

Размеры

Параметры height и width устанавливают соответственно высоту и ширину элемента в пикселях:

from tkinter import *
from tkinter import ttk

root = Tk()
root.title("METANIT.COM")
root.geometry("250x200")

btn = ttk.Button(text="Click me")
btn.place(relx=0.5, rely=0.5, anchor="c", width=80, height=40)

root.mainloop()

Здесь кнопка имеет ширину в 80 единиц и высоту в 40 единиц.

установка размеров виджета с помощью метода place в Tkinter и Python

Параметры relheight и relwidth также задают соответственно высоту и ширину элемента, но в качестве значения используется число float в промежутке между 0.0 и 1.0, которое указывает на долю от высоты и ширины родительского контейнера:

from tkinter import *
from tkinter import ttk

root = Tk()
root.title("METANIT.COM")
root.geometry("250x200")

btn = ttk.Button(text="Click me")
btn.place(relx=0.5, rely=0.5, anchor="c", relwidth=0.33, relheight=0.25)

root.mainloop()

Здесь ширина кнопки составляет треть ширины контейнера, а высота кнопки - четверть высоты контейнера. И по мере изменения размеров контейнера размеры кнопки тоже будут изменяться.

установка относительных размеров виджета с помощью метода place в Tkinter и Python
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850