Я пытаюсь создать программу tkinter, которая моделирует основную c химическую кинетику, соответствующий код похож на приведенный ниже:
import scipy
import matplotlib.pyplot as plt
import numpy as np
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
from scipy.integrate import odeint
def reqn(Ca,t):
n = EntryO.get()
k = EntryK.get()
a = Ca**n
c = (-1)* k * a
return c
def calcc():
ci = float(EntryCi.get())
k = float(EntryK.get())
n = int(EntryO.get())
t = int(Entryt.get())
t1=0.0 # temporary variables
t2=0.0
t3=0.0
y=0.0
if n==1:
y = ci*np.exp((-1.0)*k*t)
else:
t1 = (n-1)*k*t
t2 = (1/ci)**(n-1)
t3= t1 + t2
y = t3**(1/(1-n))
C.set("")
EntryC.insert(1,y)
form = tk.Tk()
form.title("Build Try 1: Reaction Kinetics")
#Tk varialbles
C = tk.DoubleVar()
Ci = tk.DoubleVar()
#Labels
LabelO = tk.Label(form, text="Order of Reaction:")
LabelK = tk.Label(form, text="Rate Constant:")
LabelCi = tk.Label(form, text="Initial concentration:")
LabelC = tk.Label(form, text="Reqd concentration:")
Labelt = tk.Label(form, text="New time:")
#Entries
EntryO = tk.Entry(form)
EntryK = tk.Entry(form)
EntryCi = tk.Entry(form, textvariable = Ci)
Entryt = tk.Entry(form)
EntryC = tk.Entry(form, textvariable = C)
#Buttons
btnC = tk.Button(form, text = "Calculate", command = calcc)
btnP = tk.Button(form, text = "Plot", command = plot)
form.mainloop()
Есть некоторые команды размещения сетки и другой код на стороне пользователя. что я временно удалил. Однако проблема в том, что когда я пытаюсь построить график с помощью кнопки построения, Python возвращает ошибку вроде:
TypeError: ufunc 'power' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''
Кроме того, когда я пытался использовать tk.DoubleVar в качестве параметров, matplotlib.plot не ' не принимать созданные списки. Как мне обойти это?