#python #user-interface #tkinter
#python #пользовательский интерфейс #tkinter
Вопрос:
Я успешно создал графический интерфейс, который принимает пользовательский ввод и выдает желаемый результат, но, похоже, я не могу понять, как отобразить этот вывод в другом окне, а не только в консоли IDE. Моя цель — открыть окно с выводом, как только пользователь нажмет «Вычислить BMI», но на данный момент вывод отображается только в консоли. Я искал решения, но, похоже, не могу понять, какие инструменты я могу использовать, чтобы это произошло. Я новичок в графическом интерфейсе, поэтому буду признателен за любую помощь.
from tkinter import *
root = Tk()
def myBMI():
weight = float(Entry.get(weight_field))
height = float(Entry.get(height_field))
bmi = (weight*703)/(height*height)
print(bmi)
height_label = Label(root, text="Enter your height: ")
height_field = Entry(root)
height_field.grid(row=0, column=1)
height_label.grid(row=0, sticky=E)
weight_label = Label(root, text="Enter your weight: ")
weight_field = Entry(root)
weight_field.grid(row=1, column=1)
weight_label.grid(row=1, sticky=E)
compute_bmi = Button(root, text="Compute BMI", command=myBMI)
compute_bmi.grid(row=2)
root.mainloop()
Комментарии:
1. Вы узнали о
Toplevel
виджете?2. Я впервые слышу об этом, сейчас я изучаю это
Ответ №1:
всплывающие окна tkinter обычно следует обрабатывать с помощью tk.TopLevel()
метода! Это сгенерирует новое окно, которое может иметь заголовок или кнопки, помещенные в него, например:
top = Toplevel()
top.title("About this application...")
msg = Message(top, text=about_message)
msg.pack()
button = Button(top, text="Dismiss", command=top.destroy)
button.pack()
Итак, вместо print(bmi)
вы могли бы сделать что-то вроде, скажем:
top = tk.Toplevel()
msg = tk.Label(top, text=bmi)
msg.pack()
Дополнительную документацию можно найти по адресу http://effbot.org/tkinterbook/toplevel.htm !
Комментарии:
1. Ах, ладно, в этом есть большой смысл. Спасибо!
2. @Brent Рад помочь! 🙂