Как я могу отобразить вывод из команды button в новом окне с помощью tkinter?

#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 Рад помочь! 🙂