Good day,
With a previous version of matplotlib, I was able to plot 4 axes on a figure and update it, in a while loop, with plt.pause().
If the figure window was closed by the user, the plt.pause() would signal an error and I was able to escape the while loop using try/except.
try: #
plt.pause(0.05) #
if gv.saveImage_UserCancel:
H1_FinishingOptions.saveImage(temp_name=f"{Names.processName}", option=2) #
except: # This allows the closing of graph display window and going back to OED main menu. Variables and lists are reset for next scan. #
if gv.multWafers_lastWaferDetected: #
H1_FinishingOptions.UserCancelled(time_lst=H1_waferScan_time_lst, select=‘single’) #
process.cprint(‘END’) #
break #
elif not gv.multWafers_lastWaferDetected: #
H1_FinishingOptions.UserCancelled(time_lst=H1_waferScan_time_lst, select=‘multiple’) #
break #
With the new release of matplotlib, I’m no longer triggering an error when the figure window is manually closed, and the program then stalls in a loop because of the plt.pause().
File “c:/Users/ABillings/AppData/Local/Programs/Python/Python37/MyPythonDocs/Endpoint-08.19.21(Samtec).py”, line 12576, in epMain
plt.pause(0.05)
File “C:\Users\ABillings\AppData\Local\Programs\Python\Python37\lib\site-packages\matplotlib\pyplot.py”, line 558, in pause
canvas.start_event_loop(interval)
File “C:\Users\ABillings\AppData\Local\Programs\Python\Python37\lib\site-packages\matplotlib\backends_backend_tk.py”, line 385, in start_event_loop
self._master.mainloop()
File “C:\Users\ABillings\AppData\Local\Programs\Python\Python37\lib\tkinter_init_.py”, line 1283, in mainloop
self.tk.mainloop(n)
KeyboardInterrupt
I’m now trying things like below, but to no avail. I need to somehow get the program to break the while loop when it detects a user has closed the figure window.
Is there a method I can call to check whether the figure is still opened and make a decision based on that?
That’s what I’m trying to do here, but the code stalls in the plt.pause() every time.
if not plt.fignum_exists(1):
print(f"plt.get_axes() is False")
break
else:
print(plt.fignum_exists(1))
print(fig.get_axes())
print(f"plt.get_axes() is True")
print(plt.get_fignums())
plt.show(block=False)
print(“Before Pause”)
plt.pause(0.05)
print(“After Pause”)
Please and thank you.