Размещение виджетов

#python #tkinter

#python #tkinter

Вопрос:

Я хочу разместить два Entry виджета в центре окна ( hour_en и min_en ) и над ними два Label виджета ( hour_lbl и min_lbl ) соответственно, но я не могу его получить. Я бы предпочел grid() , а не pack() .

Вот мой код:

 from tkinter import tk

window=Tk()
window.configure(bg='#10100f')
window.geometry("200x100")
window.resizable(False, False)

hour_lbl =Label(window,text="Hour")
hour_lbl.pack(side =TOP)
min_lbl = Label(window, text="Min")
min_lbl.pack(side=TOP)
hour_en = Entry(window, width=4)
hour_en.pack(side=LEFT,padx=(65, 0))
min_en = Entry(window, width=4)
min_en.pack(side=LEFT, padx=(10, 0))

window.mainloop()
  

Комментарии:

1. Если вы предпочитаете grid over pack , почему вы использовали pack и почему не пробовали grid ? Существует много информации о том, как использовать grid , и все ее параметры задокументированы.

2. Вам лучше поместить метки и записи во фрейм, и его легче центрировать, чем группу виджетов.

Ответ №1:

Для настройки виджетов используйте диспетчер геометрии сетки, есть отличная документация, как уже упоминалось. Например, здесь.

Поместите 4 виджета во фрейм, чтобы позже вы могли просто центрировать фрейм и, следовательно, группу виджетов в нем (как предложено в комментариях).

С изменениями ваш код может выглядеть следующим образом:

 from tkinter import *

window = Tk()
window.configure(bg='#10100f')
window.geometry("200x100")
window.resizable(False, False)

center_frame = Frame(window)

Label(center_frame, text="Hour").grid(row=0, column=0)
Label(center_frame, text="Min").grid(row=0, column=1)

Entry(center_frame, width=4).grid(row=1, column=0)
Entry(center_frame, width=4).grid(row=1, column=1)

center_frame.pack(anchor='center', expand=True)

window.mainloop()