#python #user-interface #tkinter
#python #пользовательский интерфейс #tkinter
Вопрос:
При нажатии кнопки «Рассчитать ИМТ» значение отображается над кнопкой, как и ожидалось, но нажимает кнопку вниз. Я хочу исправить кнопку независимо от того, нажата она или нет.
from tkinter import *
window = Tk()
window.title("ASA Downloader")
window.geometry("400x400")
frame1 = LabelFrame(window, padx=100, pady=100)
#Labels
weight_label = Label(frame1, text= "Weight")
height_label = Label(frame1, text= "Height")
weight_label.grid(row=0,column=0, columnspan=3)
height_label.grid(row=1,column=0, columnspan=3)
#Entery of weight
int_type= IntVar
w_entry= Entry(frame1, textvariable= int_type)
w_entry.grid(row=0, column=3, columnspan=2)
#Entery of height
h_entry= Entry(frame1, textvariable= int_type)
h_entry.grid(row=1, column=3, columnspan=2)
def bmi():
result_lable= Label(frame1, text=w_entry.get())
result_lable.grid(row=3, column=3)
result_lable.config(text= w_entry.get())
# Calculate Button
b5 = Button(frame1, text="Calculate BMI", command=bmi)
b5.grid(row=4, column=3, columnspan=3)
frame1.place(relx=.5, rely=.5, anchor="center")
frame1.mainloop()
После нажатия кнопки она немного сдвинулась с предыдущей позиции
Комментарии:
1. Установите строку
result_label
равной 5. Лучше создайте метку вне функции и обновите ее текст внутри функции.2. Да. вывод метки из функции и обновление ее текста с помощью этой строки сработали. result_lable.config(text= w_entry.get())
Ответ №1:
Вам нужно переместить определение метки из функции. Вместо этого вот так:
result_lable= Label(frame1)
result_lable.grid(row=3, column=3)
def bmi():
result_lable.config(text= w_entry.get())
Ответ №2:
Я не совсем уверен, чего вы хотите, но если вы хотите зарезервировать место для результата калькулятора BMI, способ сделать это — установить параметр высоты в метке результата. Для этого вам нужно будет инициализировать код при запуске программного обеспечения, чтобы он выглядел так:
result_lable = Label(frame1, text=w_entry.get(), height=WHATEVER_YOU_WANT)
result_lable.grid(row=3, column=3)
def bmi():
result_lable.config(text=w_entry.get())
Таким образом, между записями и кнопкой будет установлена высота метки, и она не будет отодвинута назад при вычислении.