Расчет во втором окне TKinter

При нажатии на кнопку на главном окне, открывается второе. Во втором нужно несколько форм для ввода чисел и действия над ними (сложить например) Не получается задать переменные во втором окне и формулу, при нажатии на кнопку, для расчета. Код:

from tkinter import *
import tkinter as tk
from tkinter import messagebox

# functions:
def glue():
    # messagebox.showinfo("title", "Нажато")
    glue_window = tk.Toplevel()
    glue_window.title('Расчёт клея')
    glue_window.geometry("600x300")
    glue_window.iconbitmap('E:\Projects PyCharm\calculator\ico\calc.ico')

    label = tk.Label(glue_window, text = "Введите значение 1: ")
    label.grid(column=0, row=0)
    label = tk.Label(glue_window, text="Введите значение 2: ")
    label.grid(column=0, row=1)
    label = tk.Label(glue_window, text="Введите значение 3: ")
    label.grid(column=0, row=2)

    def count():
        messagebox.showinfo("title", "Получилось: ", )

    # var's:
    a = DoubleVar()
    b = DoubleVar()
    c = DoubleVar()
    # ============

    one_entry = Entry(glue_window, )
    one_entry.grid(row=0, column=1)

    two_entry = Entry(glue_window, )
    two_entry.grid(row=1, column=1)

    two_entry = Entry(glue_window, )
    two_entry.grid(row=2, column=1)

    count = Button(glue_window, text="Расчитать", command = count)
    count.grid(column=0, row=5)

    label = tk.Label(glue_window, text="кв.м")
    label.grid(column=4, row=0)



# main window settings:
root = Tk()
root.resizable(width = False, height = False)
root.geometry("600x100")
root.iconbitmap('E:\Projects PyCharm\calculator\ico\calc.ico')
root.title("Подсчет стройматериалов")

# elements:
glue = Button(root, text="Расчет клея", command = glue)
glue.grid(column=1, row=0)
penoblock = Button(root, text="Расчет пеноблоков", )
penoblock.grid(column=2, row=0)

root.mainloop()

Ответы (1 шт):

Автор решения: insolor

У вас переменные a, b, c никак не используются. Более того, в данном случае они не нужны, т.к. Entry не поддерживает привязку переменных. Нужно брать значение из самих текстовых полей, приводить к float, потом уже с этим значением работать.

И еще нужно понимать, что messagebox.showinfo не работает как print, ему нужно ровно 2 параметра всегда, а print может принимать произвольное количество параметров. Поэтому нужно все собирать в одну строку, и выводить вторым параметром.

Пример:

one_entry = Entry(glue_window)
one_entry.grid(row=0, column=1)

two_entry = Entry(glue_window)
two_entry.grid(row=1, column=1)

three_entry = Entry(glue_window)
three_entry.grid(row=2, column=1)

def count():
    result = float(one_entry.get()) + float(two_entry.get()) + float(three_entry.get())
    messagebox.showinfo("title", f"Получилось: {result}")

Про f-строки вкратце: Форматирование строк с помощью f-strings

→ Ссылка