Tkinter постоянная ширина и высота рамки метки

#python #user-interface #tkinter

#python #пользовательский интерфейс #tkinter

Вопрос:

есть ли способ установить ширину и высоту для labelframe в tkinter, потому что, если я введу определенную высоту и ширину при создании labelframe, он фактически примет правильное значение, но только если рамка пуста. Иначе, если я что-то помещу, рамка метки примет высоту и ширину объекта с запасом.

 serverlabel = tk.LabelFrame(root, text="Servers",bg="#11ba71",relief="solid", width=320, height=430,padx=5,pady=5)
serverlabel.place(x=320,y=0)
 

serverlabel пуст, и он имеет хороший размер :

здесь размер правильный

 optionlabel = tk.LabelFrame(root, text="Options",bg="#11ba71",relief="solid",width=200, height=50,padx=5,pady=5)
optionlabel.grid(column=0, row=3, sticky=tk.W)

settingsbutton = tk.Button(optionlabel, text="Paramètre", command=parameter)
settingsbutton.pack()
...
 

но здесь optionlabel составляет всего 112×107 пикселей вместо 200×50 :

введите описание изображения здесь

Не могли бы вы мне помочь, пожалуйста?

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

1. Если вы помещаете кнопки внутри optionlabel using pack() , затем вызываете optionlabel.pack_propagate(0) after optionlabel.grid(...) . Но тогда вы не сможете увидеть все кнопки, потому что высота недостаточно высока, чтобы их показывать.

2. @acw1668 но есть способ установить ширину и высоту метки, не заботясь о том, как вставить виджет объекта внутрь?

3. Да, вы можете. Мой комментарий основан только на вашем опубликованном коде.

4. @acw1668 Итак, какой метод я должен рассмотреть, чтобы вставить виджет внутрь?

5. Это зависит от вашего дизайна. Как я уже сказал в своем комментарии, если вы используете pack() , то вам нужно позвонить optionlabel.pack_propagate(0) . Если вы используете grid() , то вам нужно вызвать optionlabel.grid_propagate(0) . Если вы используете place() , ничего не требуется.