# -*- coding: utf-8 -*- import os import tkinter as tk import DTAutil import matplotlib.pyplot as plt plt.ion() plt.rcParams["savefig.format"] = "pdf" plt.rcParams['keymap.back'].remove('left') plt.rcParams['keymap.forward'].remove('right') import numpy as np import DTAeval from DTAtooltip import Hovertip class DisplayWindow: window = None currentcall = None prevcall = None evalcall = None active_measurement = None rangewindowtitle = "" figure = None cid = None kid = None bCRigged = False bKRigged = False bModifying = False ccloseid = None boundstarget = None parentfunc = None evaltarget = None finishfunction = None numberofranges = 2 displaymode = "T" aBounds = [] rangeSelectorGuideLines = [False, False, False] rangeSelectorGhosts = [False, False, False] active_index = -1 previous_index = -1 modifybuffer = -1 dualfitlimit = "fixed" grid = True bLegend = True scaletodata = True autoshow = True bAutoZoom = False colors = {} colors["base"] = "dimgrey" colors["main"] = "darkorange" colors["sample"] = "crimson" colors["env"] = "blueviolet" colors["dT"] = "green" def __init__(self): self.mainwindow() def framecolor(self, condition): return "#004200" if condition else "#3b3b3e" def buttoncolor(self, condition): return "#006400" if condition else "#3b3b3e" def activebuttoncolor(self, condition): return "#008b20" if condition else "#47474a" def pushcall(self, function): self.prevcall = self.currentcall self.currentcall = function def pushindex(self, new_index): self.previous_index = self.active_index self.active_index = new_index def mainwindow(self): self.pushcall(self.mainwindow) if self.window == None: self.window = tk.Tk() self.window.geometry('%dx%d+%d+%d' % (740, 400, 0, 0)) self.window.configure(bg='black') self.window.option_add("*foreground","black") # This applies to the file browser window and MUST BE BLACK. Tk window texts need to be set to white locally self.window.option_add("*highlightThickness",0.3) for widget in self.window.winfo_children(): widget.destroy() self.window.title("DTA kiértékelő") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=0, bg = "black" ) frame.grid(row=0, column=0, padx=5, pady=5) label = tk.Label(master=frame, text="Mérés betöltése:", bg = "black", fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg="#000064" ) frame.grid(row=0, column=3, padx=5, pady=5) label = tk.Button(master=frame, text="Beállítások", bg="#00008B", fg = "white", activeforeground = "white", activebackground="#006ec5", command=self.optionswindow) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Ábrázolási beállítások") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg=self.framecolor(False) ) frame.grid(row=3, column=3, padx=5, pady=5) label = tk.Button(master=frame, text="Kilépés", bg=self.buttoncolor(False), fg = "white", activeforeground = "white", activebackground=self.activebuttoncolor(False), command=quit) label.pack(padx=5, pady=5) frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = "#004200" ) frame.grid(row=1, column=0, padx=5, pady=5) label = tk.Button(master=frame, text="Új mérés betöltése", bg = self.buttoncolor(True), fg = "white", activeforeground = "white", activebackground=self.activebuttoncolor(True), command=lambda: self.newfilewindow("Új mérés betöltése", lambda: self.evalwindow(True))) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Új DTA mérés betöltése") self.window.columnconfigure([0,1,2,3,4], weight=1, minsize=75) self.window.rowconfigure([0,1,2,3,4], weight=1, minsize=50) self.window.protocol("WM_DELETE_WINDOW", self.on_closing) self.window.mainloop() def newfilewindow(self, mtype, command): for widget in self.window.winfo_children(): widget.destroy() frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=0, bg = "black" ) frame.grid(row=0, column=0, padx=5, pady=5) label = tk.Label(master=frame, text=mtype+" megnyitása... (másik ablak)", bg = "black", fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) temp = DTAutil.new() if(temp): self.active_measurement = temp self.show(self.active_measurement) self.setfigtitle() command() else: self.currentcall() def optionswindow(self, bPushcall=True): if(bPushcall): self.pushcall(self.optionswindow) for widget in self.window.winfo_children(): widget.destroy() self.window.title("Beállítások") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = "#800080" ) frame.grid(row=0, column=0, padx=5, pady=5) label = tk.Button(master=frame, text="Vissza", bg = "#8B008B", fg = "white", activeforeground = "white", activebackground="#a841b0", command = self.prevcall) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Vissza a főmenübe") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(self.bLegend) ) frame.grid(row=0, column=1, padx=5, pady=5) label = tk.Button(master=frame, text="Legend: be" if self.bLegend else "Legend: ki", bg = self.buttoncolor(self.bLegend), fg = "white", activeforeground = "white", activebackground = self.activebuttoncolor(self.bLegend), command = self.toggleLegend) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Legyen-e színmagyarázat az ábrán") if(self.active_measurement): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(True) ) frame.grid(row=1, column=1, padx=5, pady=5) label = tk.Button(master=frame, text='Ábracím: "'+self.active_measurement.figtitle+'"', bg = self.buttoncolor(True), fg = "white", activeforeground = "white", activebackground = self.activebuttoncolor(True), command = self.setFigTitleWindow) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Ábracím megadása") ''' AutoZoom egyelőre nincs ehhez a kiértékeléshez frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(self.bAutoZoom) ) frame.grid(row=1, column=1, padx=5, pady=5) label = tk.Button(master=frame, text="AutoZoom: be" if self.bAutoZoom else "AutoZoom: ki", bg = self.buttoncolor(self.bAutoZoom), fg = "white", activeforeground = "white", activebackground = self.activebuttoncolor(self.bAutoZoom), command = self.toggleAutoZoom) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Bekapcsolva a program magától odanagyít\naz ábrába ahova kell illesztéseknél.\n(Kényelmi funkció)") ''' def toggleLegend(self): self.bLegend = not self.bLegend self.show(self.active_measurement,bKeepZoom=True) self.optionswindow(bPushcall=False) def toggleAutoZoom(self): self.bAutoZoom = not self.bAutoZoom self.optionswindow(bPushcall=False) def evalwindow(self, setfigtitle = False): self.pushcall(self.evalwindow) self.evalcall = self.evalwindow if(not self.active_measurement): print("Error : No active measurement") self.prevcall() for widget in self.window.winfo_children(): widget.destroy() self.window.title("DTA kiértékelése") if(setfigtitle): self.setfigtitle() frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(self.active_measurement.bIntegrated and self.active_measurement.bTh and (self.active_measurement.bTmp or self.active_measurement.bMaxT1)) ) frame.grid(row=0, column=0, padx=5, pady=5) label = tk.Button(master=frame, text="Új mérés betöltése", bg = self.buttoncolor(self.active_measurement.bIntegrated and self.active_measurement.bTh and (self.active_measurement.bTmp or self.active_measurement.bMaxT1)), fg = "white", activeforeground = "white", activebackground=self.activebuttoncolor(self.active_measurement.bIntegrated and self.active_measurement.bTh and (self.active_measurement.bTmp or self.active_measurement.bMaxT1)), command=lambda: self.newfilewindow("Új mérés betöltése", self.evalwindow)) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Új DTA mérés betöltése") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg="#000064" ) frame.grid(row=2, column=3, padx=5, pady=5) label = tk.Button(master=frame, text="Beállítások", bg = "#00008B", fg = "white", activeforeground = "white", activebackground="#006ec5", command=self.optionswindow) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Ábrázolási beállítások") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg="#000080" ) frame.grid(row=1, column=3, padx=5, pady=5) label = tk.Button(master=frame, text="Ábrázol", bg = "#0000CD", fg = "white", activeforeground = "white", activebackground="#006ec5", command=lambda: self.show(self.active_measurement)) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Ábra újrarajzolása\nHa becsuktad az ablakot, ezzel tudod visszahozni.") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg="#800080" ) frame.grid(row=0, column=3, padx=5, pady=5) label = tk.Button(master=frame, text="Váltás dT-re" if self.displaymode == "T" else "Váltás T-re", bg = "#8B008B", fg = "white", activeforeground = "white", activebackground="#a841b0", command=self.switchmode) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Váltás a dT ábrázolására és kiértékelésére" if self.displaymode == "T" else "Váltás a T1, T2 ábrázolására és kiértékelésére") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg=self.framecolor(False) ) frame.grid(row=4, column=3, padx=5, pady=5) label = tk.Button(master=frame, text="Kilépés", bg=self.buttoncolor(False), fg = "white", activeforeground = "white", activebackground=self.activebuttoncolor(False), command=quit) label.pack(padx=5, pady=5) if(self.displaymode == "dT"): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(not self.active_measurement.bBase or (self.active_measurement.bIntegrated and self.active_measurement.bDiff)) ) frame.grid(row=0, column=1, padx=5, pady=5) label = tk.Button(master=frame, text="1) Alapvonal illesztése" if not self.active_measurement.bBase else "1) Alapvonal módosítása", bg = self.buttoncolor(not self.active_measurement.bBase or (self.active_measurement.bIntegrated and self.active_measurement.bDiff)), activebackground=self.activebuttoncolor(not self.active_measurement.bBase or (self.active_measurement.bIntegrated and self.active_measurement.bDiff)), fg = "white", activeforeground = "white", command = lambda: self.selectbaselinewindow(self.evalwindow)) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Alapvonal illesztése") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(not self.active_measurement.bDiff and self.active_measurement.bBase) ) frame.grid(row=1, column=1, padx=5, pady=5) if(self.active_measurement.bBase): label = tk.Button(master=frame, text="2) Különbség levonása", bg = self.buttoncolor(not self.active_measurement.bDiff and self.active_measurement.bBase), activebackground=self.activebuttoncolor(not self.active_measurement.bDiff and self.active_measurement.bBase), fg = "white", activeforeground = "white", command = lambda: self.evalexec(DTAeval.difference, self.evalwindow)) else: label = tk.Label(master=frame, text="2) Különbség levonása", bg = "#3b3b3e", fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Alapvonal különbség levonása az adatokból") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(self.active_measurement.bDiff) ) frame.grid(row=2, column=1, padx=5, pady=5) if(self.active_measurement.bDiff): label = tk.Button(master=frame, text="3) Integrálás", bg = self.buttoncolor(self.active_measurement.bDiff), activebackground=self.activebuttoncolor(self.active_measurement.bDiff), fg = "white", activeforeground = "white", command = lambda: self.selectintegralwindow(self.evalwindow) ) else: label = tk.Label(master=frame, text="3) Integrálás", bg = "#3b3b3e", fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Görbe integráljánákat kiszámolása") if(self.active_measurement.bIntegrated): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=0, bg = "black" ) frame.grid(row=4, column=0, padx=5, pady=5) label = tk.Label(master=frame, text="Integrál ["+str(len(self.active_measurement.integrals))+"] = \n("+str(format(np.average(self.active_measurement.integrals), '.2f')) + " +/- "+str(format(np.std(self.active_measurement.integrals), '.2f')) +") Cs", bg = "black", fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg=self.framecolor(False) ) frame.grid(row=4, column=1, padx=5, pady=5) label = tk.Button(master=frame, text="Integrálok törlése", bg=self.buttoncolor(False), fg = "white", activeforeground = "white", activebackground=self.activebuttoncolor(False), command = lambda: self.clear_integralbuffer_window(self.evalwindow)) label.pack(padx=5, pady=5) if(self.displaymode == "T"): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(not self.active_measurement.bTh) ) frame.grid(row=0, column=1, padx=5, pady=5) label = tk.Button(master=frame, text="1) Th kiszámolása" if not self.active_measurement.bTh else "1) Th újraszámolása", bg = self.buttoncolor(not self.active_measurement.bTh), activebackground=self.activebuttoncolor(not self.active_measurement.bTh), fg = "white", activeforeground = "white", command = lambda: self.selectThwindow(self.evalwindow)) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "A h paraméter meghatározásához szükséges hőmérséklet (Th) megszerkesztése") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(not self.active_measurement.bMp1) ) frame.grid(row=1, column=1, padx=5, pady=5) label = tk.Button(master=frame, text="2) Előszakasz illesztése" if not self.active_measurement.bMp1 else "2) Előszakasz módosítása", bg = self.buttoncolor(not self.active_measurement.bMp1), activebackground=self.activebuttoncolor(not self.active_measurement.bMp1), fg = "white", activeforeground = "white", command = lambda: self.selectfuteswindow(self.evalwindow)) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Átalakulás előtti szakasz illesztése") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(not self.active_measurement.bMp2) ) frame.grid(row=2, column=1, padx=5, pady=5) label = tk.Button(master=frame, text="3) Átalakulási szakasz illesztése" if not self.active_measurement.bMp2 else "3) Átalakulás szakasz módosítása", bg = self.buttoncolor(not self.active_measurement.bMp2), activebackground=self.activebuttoncolor(not self.active_measurement.bMp2), fg = "white", activeforeground = "white", command = lambda: self.selectatalakulaswindow(self.evalwindow)) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Átalakulási szakasz illesztése") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(not self.active_measurement.bTmp and self.active_measurement.bMp1 and self.active_measurement.bMp2) ) frame.grid(row=3, column=1, padx=5, pady=5) if(not self.active_measurement.bTmp and self.active_measurement.bMp1 and self.active_measurement.bMp2): label = tk.Button(master=frame, text="4) Metszéspont számolása", bg = self.buttoncolor(not self.active_measurement.bTmp and self.active_measurement.bMp1 and self.active_measurement.bMp2), activebackground=self.activebuttoncolor(not self.active_measurement.bTmp and self.active_measurement.bMp1 and self.active_measurement.bMp2), fg = "white", activeforeground = "white", command = lambda: self.evalexec(DTAeval.intersection,self.evalwindow) ) else: label = tk.Label(master=frame, text="3) Metszéspont számolása", bg = "#3b3b3e", fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "A két illesztett egyenes metszéspontjának meghatározása") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(False) ) frame.grid(row=4, column=1, padx=5, pady=5) label = tk.Button(master=frame, text="6) Maximum meghatározása", bg = self.buttoncolor(False), activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white", command = lambda: self.selectmaxwindow(self.evalwindow)) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Dermedés esetén nem illeszthető metszéspont (pl. ón esetén) helyett átalakulás maximum hőmérsékletének meghatározása") self.window.columnconfigure([0,1,2,3,4,5], weight=1, minsize=75) self.window.rowconfigure([0,1,2,3,4,5], weight=1, minsize=50) def on_closing(self): if(self.currentcall != None): self.pushcall(None) for widget in self.window.winfo_children(): widget.destroy() self.window.title("Biztos ki akarsz lépni?") self.window.columnconfigure(0, weight=1, minsize=75) self.window.rowconfigure(0, weight=1, minsize=50) frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = "#3b3b3e" ) frame.grid(row=0, column=0, padx=5, pady=5) label = tk.Button(master=frame, text="Kilépés", command = quit, bg = "#3b3b3e", activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) self.window.columnconfigure(0, weight=1, minsize=75) self.window.rowconfigure(0, weight=1, minsize=50) frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = "#3b3b3e" ) frame.grid(row=0, column=1, padx=5, pady=5) label = tk.Button(master=frame, text="Vissza", command=self.prevcall, bg = "#3b3b3e", activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) def on_figure_close(self, event): self.figure.canvas.mpl_disconnect(self.ccloseid) self.figure = None def switchmode(self): if(self.displaymode == "T"): self.displaymode = "dT" else: self.displaymode = "T" self.show(self.active_measurement,bKeepZoom=False) self.evalwindow() def clear_integralbuffer_window(self,parent): for widget in self.window.winfo_children(): widget.destroy() self.window.title("Biztos vagy benne?") self.window.columnconfigure(0, weight=1, minsize=75) self.window.rowconfigure(0, weight=1, minsize=50) frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = "#3b3b3e" ) frame.grid(row=0, column=0, padx=5, pady=5) label = tk.Button(master=frame, text="Törlés", command = lambda: self.clear_integralbuffer(parent), bg = "#3b3b3e", activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) self.window.columnconfigure(0, weight=1, minsize=75) self.window.rowconfigure(0, weight=1, minsize=50) frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = "#3b3b3e" ) frame.grid(row=0, column=1, padx=5, pady=5) label = tk.Button(master=frame, text="Mégsem", command=parent, bg = "#3b3b3e", activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) def clear_integralbuffer(self, parent): self.active_measurement.bIntegrated = False self.active_measurement.integrals = [] self.show(self.active_measurement) parent() def show(self,meas, bKeepZoom = False): if(not self.active_measurement): print("Error : No selected data") return if(not self.figure): self.figure = plt.figure() self.ccloseid = self.figure.canvas.mpl_connect('close_event', self.on_figure_close) #current_xlim = plt.gca().get_xlim() #current_ylim = plt.gca().get_ylim() if(bKeepZoom): plt.gca().lines.clear() if(not self.bLegend): plt.gca().legend_ = None from matplotlib.collections import LineCollection for child in plt.gca().get_children(): if isinstance(child, LineCollection): child.remove() else: plt.clf() if(self.displaymode == "dT"): if(meas.bBase and meas.bDiff): plt.plot(meas.x,meas.dTdiffed, color=self.colors["dT"], label='Hőmérséklet különbség') else: plt.plot(meas.x,meas.dT, color=self.colors["dT"], label='Hőmérséklet különbség') plt.xlabel("t (s)") plt.ylabel(r'$\Delta$T $(^{\circ}\mathrm{C})$') else: plt.plot(meas.x,meas.T1, color=self.colors["sample"], label='Mintatartó hőmérséklete') plt.plot(meas.x,meas.T2, color=self.colors["env"], label='Környezet hőmérséklete') plt.xlabel("t (s)") plt.ylabel(r'T $(^{\circ}\mathrm{C})$') auto_ylim = plt.gca().get_ylim() auto_xlim = plt.gca().get_xlim() if(self.grid): plt.grid("true",linestyle="--") xs = np.linspace(meas.x[0], meas.x[-1], 100) if(self.displaymode == "dT"): if(meas.bBase): if(meas.bDiff): plt.plot(xs,DTAutil.flin(xs,0,0),color=self.colors["base"], label="Alapvonal") elif(meas.bComplexBase): def getcomplexbase(x_arr): ret_y = [] for x_i in x_arr: if(x_i <= meas.base_end): ret_y.append(DTAutil.flin(x_i,meas.base_a,meas.base_b)) elif(x_i <= meas.baseUp_start): ret_y.append(float(meas.basespline(x_i))) else: ret_y.append(DTAutil.flin(x_i,meas.baseUp_a,meas.baseUp_b)) return ret_y plt.plot(xs,getcomplexbase(xs),color=self.colors["base"], label="Alapvonal") else: plt.plot(xs,DTAutil.flin(xs,meas.base_a,meas.base_b),color=self.colors["base"], label="Alapvonal illesztés") else: if(not meas.bMaxT1 and meas.bMp1): xs1 = np.linspace(meas.mp1_start, meas.mp1_end, 100) xs2 = np.linspace(meas.mp1_end, meas.x[-1], 100) if(meas.bMp2): xs2 = np.linspace(meas.mp1_end, meas.mp2_start, 100) if(meas.bTmp and meas.Tmp_x > meas.mp2_start): xs2 = np.linspace(meas.mp1_end, meas.Tmp_x + 20, 100) plt.plot(xs1,DTAutil.flin(xs1,meas.mp1_a,meas.mp1_b),color=self.colors["main"]) #, label="Fűtési előszakasz illesztés") plt.plot(xs2,DTAutil.flin(xs2,meas.mp1_a,meas.mp1_b),color=self.colors["main"], linestyle = (0, (1, 1))) if(not meas.bMaxT1 and meas.bMp2): xs1 = np.linspace(meas.x[0], meas.mp2_start, 100) if(meas.bMp1): xs1 = np.linspace(meas.mp1_end, meas.mp2_start, 100) if(meas.bTmp and meas.Tmp_x < meas.mp1_end): xs1 = np.linspace(meas.Tmp_x - 20, meas.mp2_start, 100) xs2 = np.linspace(meas.mp2_start,meas.mp2_end, 100) plt.plot(xs1,DTAutil.flin(xs1,meas.mp2_a,meas.mp2_b),color=self.colors["main"], linestyle = (0, (1, 1))) plt.plot(xs2,DTAutil.flin(xs2,meas.mp2_a,meas.mp2_b),color=self.colors["main"]) #, label="Átalakulási szakasz illesztés") if(not meas.bMaxT1 and meas.bTmp): # dötty a metszéspontra és vonal plt.plot([meas.Tmp_x],[meas.Tmp], 'bo', linewidth = 0.1, markersize=4.2) plt.axhline(y = meas.Tmp, color = 'darkblue', alpha = 0.56, label=r'$\mathrm{T}_\mathrm{mp}$ = '+str(format(meas.Tmp, '.2f'))+r' $^{\circ}\mathrm{C}$') if(meas.bTh): plt.gca().vlines(meas.x[meas.Th_xmin], meas.T2[meas.Th_xmin] if meas.T1[meas.Th_xmin] > meas.T2[meas.Th_xmin] else meas.T1[meas.Th_xmin], meas.T1[meas.Th_xmin] if meas.T1[meas.Th_xmin] > meas.T2[meas.Th_xmin] else meas.T2[meas.Th_xmin]) plt.gca().vlines(meas.x[meas.Th_xmax], meas.T2[meas.Th_xmax] if meas.T1[meas.Th_xmax] > meas.T2[meas.Th_xmax] else meas.T1[meas.Th_xmax], meas.T1[meas.Th_xmax] if meas.T1[meas.Th_xmax] > meas.T2[meas.Th_xmax] else meas.T2[meas.Th_xmax]) plt.gca().vlines(meas.x[meas.Th_x], meas.T2[meas.Th_x] if meas.T1[meas.Th_x] > meas.T2[meas.Th_x] else meas.T1[meas.Th_x], meas.T1[meas.Th_x] if meas.T1[meas.Th_x] > meas.T2[meas.Th_x] else meas.T2[meas.Th_x]) plt.plot([meas.x[meas.Th_x]],[meas.Th], 'bo', linewidth = 0.1, markersize=4.2) plt.axhline(y = meas.Th, color = 'blue', alpha = 0.56, label=r'$\mathrm{T}_\mathrm{h}$ = '+str(format(meas.Th, '.2f'))+r' $^{\circ}\mathrm{C}$') if(meas.bMaxT1): plt.axhline(y = meas.maxT1, color = 'darkblue', alpha = 0.56, label=r'$\mathrm{T}_{1}^\mathrm{max}$ = '+str(format(meas.maxT1, '.2f'))+r' $^{\circ}\mathrm{C}$') #if(meas.bTs): # plt.plot(meas.x,meas.Ts, color=self.colors["T*"], label="Korrigált hőmérséklet") # auto_ylim = plt.gca().get_ylim() #if(meas.bMain): # plt.plot(xs,DTAutil.flin(xs,meas.main_a,meas.main_b), color=self.colors["main"], label=("Főszakasz illesztés (korr.)" if meas.bMainCorrected else "Főszakasz illesztés") ) #if(meas.bMainExp): # xs2 = np.linspace(meas.mainexp_start, meas.mainexp_end, 100) # plt.plot(xs2,DTAutil.fexp(xs2,meas.mainexp_A,meas.mainexp_b,meas.mainexp_c), color=self.colors["main"], label="Exp. főszakasz illesztés") #if(meas.bExp): # plt.plot(xs,DTAutil.fexp(xs,meas.exp_A,meas.exp_b,meas.exp_c), color=self.colors["exp"], label="Utószakasz illesztés") # plt.plot(xs,DTAutil.flin(xs,0,meas.exp_c), color=self.colors["exp"], linestyle="--") gcolors = ["#FF00FF","#FF1493","#4B0082","lightseagreen"] #"#6E750E"] for i in range(len(self.rangeSelectorGuideLines)): xs = self.rangeSelectorGuideLines[i] if xs: plt.axvline(x = xs, color = gcolors[i], alpha = 0.8, linestyle = (0, (1, 1))) for xs in self.rangeSelectorGhosts: if xs: plt.axvline(x = xs, color = 'grey', alpha = 0.56, linestyle = (0, (1, 1))) if(self.scaletodata): plt.xlim(auto_xlim) plt.ylim(auto_ylim) if(self.bLegend): plt.legend() plt.title(self.active_measurement.figtitle) #if(bKeepZoom): # plt.gca().set_xlim(current_xlim) # plt.gca().set_ylim(current_ylim) plt.show(block=False) return def setFigTitleWindow(self): for widget in self.window.winfo_children(): widget.destroy() self.window.title("Mérés címe") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=0, bg = "black" ) frame.grid(row=0, column=1, padx=5, pady=5) label = tk.Label(master=frame, text="Mérés címe (ón/ólom, α fűtési sebesség?):", bg = "black", fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = "#800080" ) frame.grid(row=1, column=0, padx=5, pady=5) label = tk.Button(master=frame, text="Vissza", bg = "#8B008B", fg = "white", activeforeground = "white", activebackground="#a841b0", command = lambda: self.optionswindow(bPushcall=False)) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Vissza a főmenübe") frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=0, bg = "black" ) frame.grid(row=1, column=1, padx=5, pady=5) textBox = tk.Text(master=frame, height = 5, width = 20, bg = self.buttoncolor(False), fg = "white") # FIXME colors textBox.insert("end", self.active_measurement.figtitle+", α = ") textBox.pack() frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(True) ) frame.grid(row=1, column=2, padx=5, pady=5) label = tk.Button(master=frame, text="Ok", bg = self.buttoncolor(True), activebackground=self.activebuttoncolor(True), fg = "white", activeforeground = "white", command = lambda: self.finishFigTitleWindow(textBox)) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Cím bevitele") def finishFigTitleWindow(self, textBoxObj): self.active_measurement.figtitle = textBoxObj.get("1.0","end-1c") self.setfigtitle() self.prevcall() def setfigtitle(self, wintitle="auto"): if wintitle == "auto": wintitle = self.active_measurement.figtitle + " ábra" self.show(self.active_measurement) self.figure.canvas.manager.set_window_title(wintitle) def selectbaselinewindow(self, parent): self.active_measurement.bBase = False self.show(self.active_measurement) self.numberofranges = 4 self.parentfunc = parent self.finishfunction = parent self.evaltarget = DTAeval.fitbase self.rangewindowtitle = "Alapvonal illesztése" if(self.bAutoZoom): DTAutil.autozoom(plt, self.active_measurement, "base") self.rangeSelectorMainWindow() def selectfuteswindow(self, parent): self.numberofranges = 2 self.parentfunc = parent self.finishfunction = parent self.evaltarget = DTAeval.fitfutes self.rangewindowtitle = "Előszakasz illesztése" if(self.bAutoZoom): DTAutil.autozoom(plt, self.active_measurement, "base") self.rangeSelectorMainWindow() def selectatalakulaswindow(self, parent): self.numberofranges = 2 self.parentfunc = parent self.finishfunction = parent self.evaltarget = DTAeval.fitatalakulas self.rangewindowtitle = "Átalakulási szakasz illesztése" if(self.bAutoZoom): DTAutil.autozoom(plt, self.active_measurement, "base") self.rangeSelectorMainWindow() def evalexec(self, target, parent): target(self.active_measurement) self.show(self.active_measurement,bKeepZoom=True) parent() def selectThwindow(self, parent): self.numberofranges = 2 self.parentfunc = parent self.finishfunction = parent self.evaltarget = DTAeval.getTh self.rangewindowtitle = "Átalakulás határok kiválasztása" if(self.bAutoZoom): DTAutil.autozoom(plt, self.active_measurement, "base") self.rangeSelectorMainWindow() def selectmaxwindow(self, parent): self.numberofranges = 2 self.parentfunc = parent self.finishfunction = lambda: self.maximum_done(parent) self.evaltarget = DTAeval.getMaximumT1 self.rangewindowtitle = "Átalakulás határok kiválasztása" if(self.bAutoZoom): DTAutil.autozoom(plt, self.active_measurement, "base") self.rangeSelectorMainWindow() def maximum_done(self, target): self.active_measurement.bMp1 = False self.active_measurement.bMp2 = False self.active_measurement.bTmp = False target() def selectintegralwindow(self, parent): self.numberofranges = 2 self.parentfunc = parent self.finishfunction = parent self.evaltarget = DTAeval.integrate self.rangewindowtitle = "Integrál számítása" if(self.bAutoZoom): DTAutil.autozoom(plt, self.active_measurement, "int") self.rangeSelectorMainWindow() def rig_for_input(self, targetf, active_index): self.pushindex(active_index) self.boundstarget = targetf if(not self.bCRigged): self.cid = self.figure.canvas.mpl_connect('button_press_event', self.onclick) self.bCRigged = True self.rig_arrows() def rig_arrows(self): if(not self.bKRigged): self.kid = self.figure.canvas.mpl_connect('key_press_event', self.on_press) self.bKRigged = True def modifyRangeSelect(self, new_targetf, new_index): self.pushindex(new_index) self.boundstarget = new_targetf self.modifybuffer = self.aBounds[new_index] self.aBounds[new_index] = False self.rangeSelectorGhosts[new_index] = self.rangeSelectorGuideLines[new_index] self.rangeSelectorGuideLines[new_index] = False self.bModifying = True self.show(self.active_measurement, True) self.updateRangeSelectorMainWindow() def cancelModify(self): self.aBounds[self.active_index] = self.modifybuffer self.rangeSelectorGhosts[self.active_index] = False self.rangeSelectorGuideLines[self.active_index] = self.modifybuffer self.modifybuffer = -1 self.bModifying = False self.updateRangeSelectorMainWindow() def cancelrangeselect(self, function): if(not self.active_measurement.bBase and self.active_measurement.base_a != 0): self.active_measurement.bBase = True self.parentfunc = None self.evaltarget = None self.rangeSelectorGuideLines = [False, False, False] self.rangeSelectorGhosts = [False, False, False] self.show(self.active_measurement,bKeepZoom=True) self.backfromrangeselect(function) def backfromrangeselect(self, function): self.stop_input() function() def stop_input(self): if(self.bCRigged): self.figure.canvas.mpl_disconnect(self.cid) if(self.bKRigged): self.figure.canvas.mpl_disconnect(self.kid) self.bCRigged = False self.bKRigged = False def onclick(self,event): #print('%s click: button=%d, x=%d, y=%d, xdata=%f, ydata=%f' % # ('double' if event.dblclick else 'single', event.button, # event.x, event.y, event.xdata, event.ydata)) if(event.dblclick or event.button == 2): if(self.active_index >= 1 and self.aBounds[self.active_index - 1] > event.xdata): print("A határokat növekvő sorrendben kell megadni!") return False if(self.active_index < len(self.aBounds) - 1 and self.aBounds[self.active_index + 1] and self.aBounds[self.active_index + 1] < event.xdata): print("A határokat növekvő sorrendben kell megadni!") return False self.bModifying = False self.stop_input() self.aBounds[self.active_index] = event.xdata self.rangeSelectorGuideLines[self.active_index] = event.xdata self.rangeSelectorGhosts[self.active_index] = False self.boundstarget() return True return False def on_press(self,event): if self.bModifying: return False if self.previous_index < len(self.aBounds) - 1 and self.aBounds[self.previous_index + 1]: if event.key == 'right' and self.aBounds[self.previous_index] + 0.5 > self.aBounds[self.previous_index + 1]: return False if self.previous_index >= 1 and self.aBounds[self.previous_index - 1]: if event.key == 'left' and self.aBounds[self.previous_index] - 0.5 < self.aBounds[self.previous_index - 1]: return False if event.key == 'right': self.aBounds[self.previous_index] += 0.5 self.rangeSelectorGuideLines[self.previous_index] += 0.5 self.show(self.active_measurement, True) gcolors = ["#FF00FF","#FF1493","#4B0082","lightseagreen"] frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = gcolors[self.previous_index] ) frame.grid(row=self.previous_index, column=1, padx=5, pady=5) texts = ["Alsó határ: ", "Felső határ: ", "Alsó határ 2: ", "Felső határ 2: "] label = tk.Label(master=frame, text=texts[self.previous_index]+str(round(self.aBounds[self.previous_index],3)), bg = gcolors[self.previous_index], fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) return True elif event.key == 'left': # maybeFIX ezzel se lehessen 0 ala vinni!!!! self.aBounds[self.previous_index] -= 0.5 self.rangeSelectorGuideLines[self.previous_index] -= 0.5 self.show(self.active_measurement, True) gcolors = ["#FF00FF","#FF1493","#4B0082","lightseagreen"] frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = gcolors[self.previous_index] ) frame.grid(row=self.previous_index, column=1, padx=5, pady=5) texts = ["Alsó határ: ", "Felső határ: ", "Alsó határ 2: ", "Felső határ 2: "] label = tk.Label(master=frame, text=texts[self.previous_index]+str(round(self.aBounds[self.previous_index],3)), bg = gcolors[self.previous_index], fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) return True return False def rangeSelectorMainWindow(self): self.pushcall(self.rangeSelectorMainWindow) self.bCRigged = False self.bKRigged = False self.bModifying = False self.aBounds = [False, False, False, False] self.rangeSelectorGuideLines = [False, False, False, False] self.rangeSelectorGhosts = [False, False, False, False] self.updateRangeSelectorMainWindow() def updateRangeSelectorMainWindow(self): for widget in self.window.winfo_children(): widget.destroy() self.window.title(self.rangewindowtitle) self.window.columnconfigure(0, weight=1, minsize=75) self.window.rowconfigure(0, weight=1, minsize=50) frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(False) ) frame.grid(row=0, column=0, padx=5, pady=5) label = tk.Button(master=frame, text="Vissza", bg = self.buttoncolor(False), activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white", command = lambda: self.cancelrangeselect(self.parentfunc)) label.pack(padx=5, pady=5) if(not self.aBounds[0]): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(True) ) frame.grid(row=0, column=1, padx=5, pady=5) label = tk.Label(master=frame, text="Alsó határ: <ábrán dupla katt>", bg = self.framecolor(True), fg = "white", activeforeground = "white") label_ttp = Hovertip(label, "Elfogad középső egérgombbal való kattintást is\nHatár lerakása után nyilakkal mozgatható") label.pack(padx=5, pady=5) self.rig_for_input(self.updateRangeSelectorMainWindow, 0) if(self.bModifying): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(False) ) frame.grid(row=0, column=2, padx=5, pady=5) label = tk.Button(master=frame, text="(Mégse módosít)", command = self.cancelModify, bg = self.buttoncolor(False), activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) else: frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = "#FF00FF" ) frame.grid(row=0, column=1, padx=5, pady=5) label = tk.Label(master=frame, text="Alsó határ: "+str(round(self.aBounds[0],3)), bg = "#FF00FF", fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) if(not self.bModifying): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(False) ) frame.grid(row=0, column=2, padx=5, pady=5) label = tk.Button(master=frame, text="(Módosít)", bg = self.buttoncolor(False), activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white", command = lambda: self.modifyRangeSelect(self.updateRangeSelectorMainWindow, 0)) label.pack(padx=5, pady=5) if(not self.aBounds[1] and self.aBounds[0]): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(True) ) frame.grid(row=1, column=1, padx=5, pady=5) label = tk.Label(master=frame, text="Felső határ: <ábrán dupla katt>", bg = self.framecolor(True), fg = "white", activeforeground = "white") label_ttp = Hovertip(label, "Elfogad középső egérgombbal való kattintást is\nHatár lerakása után nyilakkal mozgatható") label.pack(padx=5, pady=5) self.rig_for_input(self.updateRangeSelectorMainWindow, 1) if(self.bModifying): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(False) ) frame.grid(row=1, column=2, padx=5, pady=5) label = tk.Button(master=frame, text="(Mégse módosít)", bg = self.buttoncolor(False), activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white", command = self.cancelModify) label.pack(padx=5, pady=5) elif(self.aBounds[1]): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = "#FF1493" ) frame.grid(row=1, column=1, padx=5, pady=5) label = tk.Label(master=frame, text="Felső határ: "+str(round(self.aBounds[1],3)), bg = "#FF1493", fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) if(not self.bModifying): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(False) ) frame.grid(row=1, column=2, padx=5, pady=5) label = tk.Button(master=frame, text="(Módosít)", bg = self.buttoncolor(False), activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white", command = lambda: self.modifyRangeSelect(self.updateRangeSelectorMainWindow, 1)) label.pack(padx=5, pady=5) if(not self.aBounds[2] and self.aBounds[1] and self.numberofranges >= 3): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(True) ) frame.grid(row=2, column=1, padx=5, pady=5) label = tk.Label(master=frame, text="Alsó határ 2: <ábrán dupla katt>", bg = self.framecolor(True), fg = "white", activeforeground = "white") label_ttp = Hovertip(label, "Elfogad középső egérgombbal való kattintást is\nHatár lerakása után nyilakkal mozgatható") label.pack(padx=5, pady=5) self.rig_for_input(self.updateRangeSelectorMainWindow, 2) if(self.bModifying): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(False) ) frame.grid(row=2, column=2, padx=5, pady=5) label = tk.Button(master=frame, text="(Mégse módosít)", bg = self.buttoncolor(False), activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white", command = self.cancelModify) label.pack(padx=5, pady=5) elif(self.aBounds[2]): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = "#4B0082" ) frame.grid(row=2, column=1, padx=5, pady=5) label = tk.Label(master=frame, text="Alsó határ 2: "+str(round(self.aBounds[2],3)), bg = "#4B0082", fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) if(not self.bModifying): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(False) ) frame.grid(row=2, column=2, padx=5, pady=5) label = tk.Button(master=frame, text="(Módosít)", bg = self.buttoncolor(False), activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white", command = lambda: self.modifyRangeSelect(self.updateRangeSelectorMainWindow, 2)) label.pack(padx=5, pady=5) if(not self.aBounds[3] and self.aBounds[2] and self.numberofranges >= 4): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(True) ) frame.grid(row=3, column=1, padx=5, pady=5) label = tk.Label(master=frame, text="Felső határ 2: <ábrán dupla katt>", bg = self.framecolor(True), fg = "white", activeforeground = "white") label_ttp = Hovertip(label, "Elfogad középső egérgombbal való kattintást is\nHatár lerakása után nyilakkal mozgatható") label.pack(padx=5, pady=5) self.rig_for_input(self.updateRangeSelectorMainWindow, 3) if(self.bModifying): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(False) ) frame.grid(row=3, column=2, padx=5, pady=5) label = tk.Button(master=frame, text="(Mégse módosít)", bg = self.buttoncolor(False), activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white", command = self.cancelModify) label.pack(padx=5, pady=5) elif(self.aBounds[3]): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = "lightseagreen"#"#6E750E" ) frame.grid(row=3, column=1, padx=5, pady=5) label = tk.Label(master=frame, text="Felső határ 2: "+str(round(self.aBounds[3],3)), bg = "lightseagreen", fg = "white", activeforeground = "white") label.pack(padx=5, pady=5) if(not self.bModifying): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(False) ) frame.grid(row=3, column=2, padx=5, pady=5) label = tk.Button(master=frame, text="(Módosít)", bg = self.buttoncolor(False), activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white", command = lambda: self.modifyRangeSelect(self.updateRangeSelectorMainWindow, 3)) label.pack(padx=5, pady=5) frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg="#000080" ) frame.grid(row=0, column=3, padx=5, pady=5) label = tk.Button(master=frame, text="Zoom reset", bg="#0000CD", fg = "white", activeforeground = "white", activebackground="#006ec5", command=lambda: self.show(self.active_measurement)) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Nagyítás alapértelmezettbe állítása") if(not self.bModifying and (self.aBounds[3] > 1 or (self.aBounds[2] > 1 and self.numberofranges == 3) or (self.aBounds[1] > 1 and self.numberofranges == 2))): frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(True) ) frame.grid(row=4, column=1, padx=5, pady=5) label = tk.Button(master=frame, text=self.rangewindowtitle, bg = self.buttoncolor(True), activebackground=self.activebuttoncolor(True), fg = "white", activeforeground = "white", command = self.rangeSelectorFinish) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Illesztése elvégzése (egyenes illesztése a két kijelölt szakaszra)") ''' Ez egyelőre nem működik jól (nem tudja megilleszteni), amúgy nem is kell if self.numberofranges == 4: frame = tk.Frame( master=self.window, relief=tk.RAISED, borderwidth=1, bg = self.framecolor(False) ) frame.grid(row=4, column=2, padx=5, pady=5) label = tk.Button(master=frame, text="Spline illesztése", bg = self.buttoncolor(False), activebackground=self.activebuttoncolor(False), fg = "white", activeforeground = "white", command = lambda: self.modEvalThenFinish(DTAeval.fitComplexBase)) label.pack(padx=5, pady=5) label_ttp = Hovertip(label, "Illesztése elvégzése (egyenes illesztése a két kijelölt szakaszra, a közti szakaszhoz köbös spline illesztése)") ''' self.pushindex(self.numberofranges) self.rig_arrows() self.window.columnconfigure([0,1,2,3], weight=1, minsize=75) self.window.rowconfigure([0,1,2,3], weight=1, minsize=50) self.window.columnconfigure(1, weight=4, minsize=200) self.show(self.active_measurement, bKeepZoom=True) def modEvalThenFinish(self, func): self.evaltarget = func self.rangeSelectorFinish() def rangeSelectorFinish(self): self.stop_input() self.rangeSelectorGuideLines = [False, False, False, False] self.rangeSelectorGhosts = [False, False, False, False] self.evaltarget(self.active_measurement, self.aBounds) self.show(self.active_measurement, bKeepZoom=True) self.finishfunction() #else: # uplims, cms = self.evaltarget(self.active_measurement, self.aBounds[0], self.aBounds[1], self.aBounds[2]) # self.show(self.active_measurement) # if(uplims and cms): # self.finishfunction(uplims, cms, self.parentfunc)