#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
overpack
, почему вы использовали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()