Менеджер геометрии места-самый простой из трех менеджеров общей геометрии, представленных в Tkinter. Это позволяет явно задать положение и размер окна либо в абсолютном выражении, либо относительно другого окна.
Вы можете получить доступ к менеджеру мест с помощью place()
метода, доступного для всех стандартных виджетов.
Обычно это не очень хорошая идея использовать place()
для обычных макетов окон и диалоговых окон; это просто большая работа, чтобы все работало так, как должно. Используйте менеджеров pack()
или grid()
для таких целей.
Синтаксис:
widget.place(relx = 0.5, rely = 0.5, anchor = CENTER)
Примечание: place()
метод может быть использован с grid()
метод, а также с pack()
метод.
Код № 1:
# Importing tkinter module
from tkinter import * from tkinter.ttk import *
# creating Tk window
master = Tk()
# setting geometry of tk window
master.geometry("200x200")
# button widget
b1 = Button(master, text = "Click me !")
b1.place(relx = 1, x =-2, y = 2, anchor = NE)
# label widget
l = Label(master, text = "I'm a Label")
l.place(anchor = NW)
# button widget
b2 = Button(master, text = "GFG")
b2.place(relx = 0.5, rely = 0.5, anchor = CENTER)
# infinite loop which is required to
# run tkinter program infinitely
# until an interrupt occurs
mainloop()
Выход:
Когда мы используем pack()
или grid()
менеджеры, тогда очень легко поместить два разных виджета отдельно друг от друга, но поместить один из них внутри другого немного сложно. Но этого легко можно достичь с помощью place()
метода.
В методе place() мы можем использовать опцию in_, чтобы поместить один виджет в другой.
Код № 2:
# Importing tkinter module
from tkinter import * from tkinter.ttk import *
# creating Tk window
master = Tk()
# setting geometry of tk window
master.geometry("200x200")
# button widget
b2 = Button(master, text = "GFG")
b2.pack(fill = X, expand = True, ipady = 10)
# button widget
b1 = Button(master, text = "Click me !")
# This is where b1 is placed inside b2 with in_ option
b1.place(in_= b2, relx = 0.5, rely = 0.5, anchor = CENTER)
# label widget
l = Label(master, text = "I'm a Label")
l.place(anchor = NW)
# infinite loop which is required to
# run tkinter program infinitely
# until an interrupt occurs
mainloop()
Вывод:
На изображениях ниже обратите внимание, что одна кнопка расположена внутри другой.