1
1
#!/usr/bin/python
2
+ # needs pmw (in pypi, conda-forge)
3
+ # For Python 2, needs future (in conda pypi and "default")
4
+
2
5
from __future__ import print_function
3
6
4
7
""" Simple GUI application for visualizing how the poles/zeros of the transfer
40
43
"""
41
44
42
45
import control .matlab
43
- import Tkinter
46
+ import tkinter
44
47
import sys
45
48
import Pmw
46
49
import matplotlib .pyplot as plt
@@ -103,7 +106,7 @@ def __init__(self, parent):
103
106
pass
104
107
105
108
widgets = (self .numerator_widget , self .denominator_widget )
106
- for i in xrange (len (widgets )):
109
+ for i in range (len (widgets )):
107
110
widgets [i ].grid (row = i + 1 , column = 0 , padx = 20 , pady = 3 )
108
111
Pmw .alignlabels (widgets )
109
112
@@ -158,24 +161,24 @@ def __init__(self, parent):
158
161
self .zeros = []
159
162
self .poles = []
160
163
161
- self .topframe = Tkinter .Frame (self .master )
164
+ self .topframe = tkinter .Frame (self .master )
162
165
self .topframe .pack (expand = True , fill = 'both' )
163
166
164
- self .entries = Tkinter .Frame (self .topframe )
167
+ self .entries = tkinter .Frame (self .topframe )
165
168
self .entries .pack (expand = True , fill = 'both' )
166
169
167
- self .figure = Tkinter .Frame (self .topframe )
170
+ self .figure = tkinter .Frame (self .topframe )
168
171
self .figure .pack (expand = True , fill = 'both' )
169
172
170
- header = Tkinter .Label (self .entries ,
173
+ header = tkinter .Label (self .entries ,
171
174
text = 'Define the transfer function:' )
172
175
header .grid (row = 0 , column = 0 , padx = 20 , pady = 7 )
173
176
174
177
175
178
self .tfi = TFInput (self .entries )
176
179
self .sys = self .tfi .get_tf ()
177
180
178
- Tkinter .Button (self .entries , text = 'Apply' , command = self .apply ,
181
+ tkinter .Button (self .entries , text = 'Apply' , command = self .apply ,
179
182
width = 9 ).grid (row = 0 , column = 1 , rowspan = 3 , padx = 10 , pady = 5 )
180
183
181
184
self .f_bode = plt .figure (figsize = (4 , 4 ))
@@ -185,25 +188,25 @@ def __init__(self, parent):
185
188
186
189
self .canvas_pzmap = FigureCanvasTkAgg (self .f_pzmap ,
187
190
master = self .figure )
188
- self .canvas_pzmap .show ()
191
+ self .canvas_pzmap .draw ()
189
192
self .canvas_pzmap .get_tk_widget ().grid (row = 0 , column = 0 ,
190
193
padx = 0 , pady = 0 )
191
194
192
195
self .canvas_bode = FigureCanvasTkAgg (self .f_bode ,
193
196
master = self .figure )
194
- self .canvas_bode .show ()
197
+ self .canvas_bode .draw ()
195
198
self .canvas_bode .get_tk_widget ().grid (row = 0 , column = 1 ,
196
199
padx = 0 , pady = 0 )
197
200
198
201
self .canvas_step = FigureCanvasTkAgg (self .f_step ,
199
202
master = self .figure )
200
- self .canvas_step .show ()
203
+ self .canvas_step .draw ()
201
204
self .canvas_step .get_tk_widget ().grid (row = 1 , column = 0 ,
202
205
padx = 0 , pady = 0 )
203
206
204
207
self .canvas_nyquist = FigureCanvasTkAgg (self .f_nyquist ,
205
208
master = self .figure )
206
- self .canvas_nyquist .show ()
209
+ self .canvas_nyquist .draw ()
207
210
self .canvas_nyquist .get_tk_widget ().grid (row = 1 , column = 1 ,
208
211
padx = 0 , pady = 0 )
209
212
@@ -302,7 +305,7 @@ def mouse_move(self, event):
302
305
tfcn = self .tfi .get_tf ()
303
306
if (tfcn != None ):
304
307
self .draw_pz (tfcn )
305
- self .canvas_pzmap .show ()
308
+ self .canvas_pzmap .draw ()
306
309
307
310
def apply (self ):
308
311
"""Evaluates the transfer function and produces different plots for
@@ -353,10 +356,10 @@ def redraw(self):
353
356
print ("Error plotting step response" )
354
357
plt .suptitle ('Step Response' )
355
358
356
- self .canvas_pzmap .show ()
357
- self .canvas_bode .show ()
358
- self .canvas_step .show ()
359
- self .canvas_nyquist .show ()
359
+ self .canvas_pzmap .draw ()
360
+ self .canvas_bode .draw ()
361
+ self .canvas_step .draw ()
362
+ self .canvas_nyquist .draw ()
360
363
361
364
def create_analysis ():
362
365
""" Create main object """
@@ -366,7 +369,7 @@ def handler():
366
369
sys .exit ()
367
370
368
371
# Launch a GUI for the Analysis module
369
- root = Tkinter .Tk ()
372
+ root = tkinter .Tk ()
370
373
root .protocol ("WM_DELETE_WINDOW" , handler )
371
374
Pmw .initialise (root )
372
375
root .title ('Analysis of Linear Systems' )
0 commit comments