Так что обычные функции калькулятора работают нормально, но я пытаюсь добавить в него калькулятор стоимости денег во времени. По сути, я хочу иметь возможность нажимать число, затем сохранять его в одной из кнопок (N, I / Y, PMT, PV, FV), а затем использовать Numpy для вычисления пропущенного значения. Какие-либо предложения? Если у вас есть предложения по ресурсам, это также будет очень полезно.
from tkinter import *
import numpy as np
operator = ""
nPeriods = ""
rate = ""
def btnClick(numbers):
global operator
operator = operator + str(numbers)
text_input.set(operator)
def btnClearDisplay():
global operator
operator = ""
text_input.set("")
def btnEqualsInput():
global operator
sumup = str(eval(operator))
text_input.set(sumup)
operator = ""
def btnNClick():
global nPeriods
global operator
nPeriods = text_input.get() #may need to adjust
text_input.set(nPeriods)
operator = ""
def btnIYClick():
global rate
rate = int(text_input.get()) / 100
#text_input.set(rate)
calc = Tk()
calc.title("Calculator")
text_input = StringVar()
textDisplay = Entry(calc,font=('arial',20,'bold'), textvariable=text_input, bd=25, insertwidth=10, bg='powder blue', justify='right')
textDisplay.grid(row=0, column=0, columnspan = 4)
#========================================
btn1 = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='1', bg='powder blue', command=lambda:btnClick(1))
btn1.grid(row=1,column=0)
btn2 = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='2', bg='powder blue', command=lambda:btnClick(2))
btn2.grid(row=1,column=1)
btn3 = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='3', bg='powder blue', command=lambda:btnClick(3))
btn3.grid(row=1,column=2)
addition = Button(calc, padx=18, pady=20, fg="black", font=('arial',20,'bold'), text='+', bg='powder blue', command=lambda:btnClick('+'))
addition.grid(row=1,column=3)
#========================================
btn4 = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='4', bg='powder blue', command=lambda:btnClick(4))
btn4.grid(row=2,column=0)
btn5 = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='5', bg='powder blue', command=lambda:btnClick(5))
btn5.grid(row=2,column=1)
btn6 = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='6', bg='powder blue', command=lambda:btnClick(6))
btn6.grid(row=2,column=2)
subtraction = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='-', bg='powder blue', command=lambda:btnClick('-'))
subtraction.grid(row=2,column=3)
#========================================
btn7 = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='7', bg='powder blue', command=lambda:btnClick(7))
btn7.grid(row=3,column=0)
btn8 = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='8', bg='powder blue', command=lambda:btnClick(8))
btn8.grid(row=3,column=1)
btn9 = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='9', bg='powder blue', command=lambda:btnClick(9))
btn9.grid(row=3,column=2)
multiply = Button(calc, padx=19, pady=20, fg="black", font=('arial',20,'bold'), text='*', bg='powder blue', command=lambda:btnClick('*'))
multiply.grid(row=3,column=3)
#========================================
btn0 = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='0', bg='powder blue', command=lambda:btnClick(0))
btn0.grid(row=4,column=0)
btnClear = Button(calc, padx=18.5, pady=20, fg="black", font=('arial',20,'bold'), text='C', bg='powder blue', command=btnClearDisplay)
btnClear.grid(row=4,column=1)
btnEquals = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='=', bg='powder blue', command=btnEqualsInput)
btnEquals.grid(row=4,column=2)
divide = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='/', bg='powder blue', command=lambda:btnClick('/'))
divide.grid(row=4,column=3)
#==========================================
btnN = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='N', bg='powder blue', command=btnNClick)
btnN.grid(row=5,column=0)
btnIY = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='I/Y', bg='powder blue', command=btnIYClick)
btnIY.grid(row=5,column=1)
btnPV = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='PV', bg='powder blue', command=lambda:btnClick(3))
btnPV.grid(row=5,column=2)
btnPMT = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='PMT', bg='powder blue', command=lambda:btnClick(1))
btnPMT.grid(row=6,column=0)
btnFV = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='FV', bg='powder blue', command=lambda:btnClick(2))
btnFV.grid(row=6,column=1)
btnCPT = Button(calc, padx=20, pady=20, fg="black", font=('arial',20,'bold'), text='CPT', bg='powder blue', command=lambda:btnClick(3))
btnCPT.grid(row=6,column=2)
calc.mainloop()