ich versuche eine GUI application für ein Matlab script in Tkinter zu programmieren. Die Idee ist, zwei benötigte Variablen über ein Entry-field in das Matlab script einzubinden. Die Idee ist mittels scipy die zwei Input Parameter ("mach number" und "number of expansion Waves") in zwei neuen Matlab-files zu speichern und diese dann in dem main-script einzubinden. Das klappt auch ohne probleme.
Was nicht funktioniert, ist der Input über die Entry-fields. Ich würde gerne die Parameter im entry-field eingeben, diese dann in einer Variablen speichern, welche dann über scipy im Matlab-file gespeichert werden kann. Hier fehlt mir der Ansatz für die Speicherung der Eingabe in einer Variablen.
Ich freue mich über jede Hilfe
Mein code:
Code: Alles auswählen
import numpy as np
import scipy.io as io
import tkinter as tk
root = tk.Tk()
HEIGHT = 500
WIDTH = 600
# Appearance ---------------------------------------------------------------
canvas = tk.Canvas(root, height=HEIGHT, width=WIDTH)
canvas.pack()
frame = tk.Frame(root, bg="#e3e3e3")
frame.place(relwidth=1, relheight=1)
label = tk.Label(frame, text="Design of a 2D Minimum Length Nozzle ", anchor="c", font=('Helvetica', 8, 'bold'))
label.place(x=250, y=20, height=25, width=250)
# Buttons
button = tk.Button(frame, text="Calculate")
button.place(x=400, y=400, height=25, width=100)
# -------------------------------------------------------------------------------
label8 = tk.Label(frame, text="Input parameters", anchor="w", font=('Helvetica', 8, 'bold'))
label8.place(x=25, y=320, height=25, width=130)
label9 = tk.Label(frame, text="Mach number", anchor="w")
label9.place(x=25, y=360, height=25, width=130)
label10 = tk.Label(frame, text="Number exp. waves", anchor="w")
label10.place(x=25, y=400, height=25, width=130)
v = tk.IntVar()
entry9=tk.Entry(frame, textvariable=v)
entry9.place(x=160, y=360, height=25, width=100)
entry10=tk.Entry(frame)
entry10.place(x=160, y=400, height=25, width=100)
# Matlab section
import matlab.engine
eng = matlab.engine.start_matlab()
# Insert number of expansion waves to matlab
number_of_expansion_waves = 50 # --> Diese Zahl sollte über das Entry-widget eingegeben werden
a={}
a['z'] = number_of_expansion_waves
io.savemat('number_expansion_waves.mat',a)
# Insert Mach number to matlab
mach_number = 10 # --> Diese Zahl sollte über das Entry-widget eingegeben werden
b={}
b['z1'] = mach_number
io.savemat('mach_number.mat',b)
eng.main(nargout=0)
root.mainloop()