Я новичок в python и у меня есть проект, над которым я работаю.Я пытаюсь получить графический интерфейс, который, когда вы нажимаете кнопку, появляется график.Есть четыре кнопки и 4 разных участка.Я знаю, что графики работают, потому что я написал их отдельно, но не уверен, как я пытаюсь написать правильную функцию для события.Это то, что я имею до сих пор.
import tkinter as tk
root= tk.Tk()
root.title('Project: S-Parameters & Stability')
frame = tk.Frame(root, relief='raised', bd=3) #bd = border
frame.pack(pady=10)
import numpy as np
import matplotlib.pyplot as plt
Frequency,S11_Mag,S11_Ph,S21_Mag,S21_Ph,S12_Mag,S12_Ph,S22_Mag,S22_Ph
= np.loadtxt('/Users/polo/Desktop/S2P_File.csv',
unpack = True,
delimiter = ',')
def plot_graph(something):
#print(something)
if something == 'S11':
plt.figure(1)
# plotting the points
plt.subplot(211)
plt.plot(Frequency,S11_Mag)
# giving a title to my graph
plt.title('S11 Magnitude and Phase')
# naming the x axis
plt.xlabel('Frequency (GHz)')
# naming the y axis
plt.ylabel('Magnitude (dB)')
plt.subplot(212)
plt.plot(Frequency,S11_Ph)
# naming the x axis
plt.xlabel('Frequency (GHz)')
# naming the y axis
plt.ylabel('Phase (Degree)')
elif something == 'S22':
plt.figure(2)
# plotting the points
plt.subplot(211)
plt.plot(Frequency,S22_Mag)
# giving a title to my graph
plt.title('S22 Magnitude and Phase')
# naming the x axis
plt.xlabel('Frequency (GHz)')
# naming the y axis
plt.ylabel('Magnitude (dB)')
plt.subplot(212)
plt.plot(Frequency,S22_Ph)
# naming the x axis
plt.xlabel('Frequency (GHz)')
# naming the y axis
plt.ylabel('Phase (Degree)')
elif something == 'S21':
plt.figure(3)
# plotting the points
plt.subplot(211)
plt.plot(Frequency,S21_Mag)
# giving a title to my graph
plt.title('S21 Magnitude and Phase')
# naming the x axis
plt.xlabel('Frequency (GHz)')
# naming the y axis
plt.ylabel('Magnitude (dB)')
plt.subplot(212)
plt.plot(Frequency,S21_Ph)
# naming the x axis
plt.xlabel('Frequency (GHz)')
# naming the y axis
plt.ylabel('Phase (Degree)')
elif something == 'S12':
plt.figure(4)
# plotting the points
plt.subplot(211)
plt.plot(Frequency,S12_Mag)
# giving a title to my graph
plt.title('S22 Magnitude and Phase')
# naming the x axis
plt.xlabel('Frequency (GHz)')
# naming the y axis
plt.ylabel('Magnitude (dB)')
plt.subplot(212)
plt.plot(Frequency,S12_Ph)
# naming the x axis
plt.xlabel('Frequency (GHz)')
# naming the y axis
plt.ylabel('Phase (Degree)')
tk.Button(frame, text="S11", command = lambda:plot_graph('S11')).pack(side=tk.LEFT, fill = tk.Y)
tk.Button(frame, text="S22", command = lambda:plot_graph('S22')).pack(side=tk.LEFT, fill = tk.Y)
tk.Button(frame, text="S21", command = lambda:plot_graph('S21')).pack(side=tk.LEFT, fill = tk.Y)
tk.Button(frame, text="S12", command = lambda:plot_graph('S12')).pack(side=tk.LEFT, fill = tk.Y)
root.mainloop()
}
Я знаю, что это неправильно, но я не знаю, как правильно обработать событие.Любая помощь будет оценена.
Спасибо,
ПОЛО