3 e@sddlZddlZddlZddljZejdejd<ejdj dejdj dddl Z ddl Z ddl mZGd d d ZdS) NZpdfzsavefig.formatz keymap.backleftzkeymap.forwardright)Hovertipc@seZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZdZgZdddgZdddgZdhZdiZdjZdZdZdZdZdZ dZ!iZ"d e"d <d e"d <d e"d<de"d<de"d<ddZ#ddZ$ddZ%ddZ&ddZ'ddZ(dd Z)d!d"Z*dkd#d$Z+d%d&Z,d'd(Z-dld)d*Z.d+d,Z/d-d.Z0d/d0Z1d1d2Z2d3d4Z3dmd5d6Z4d7d8Z5d9d:Z6dndd?Z8d@dAZ9dBdCZ:dDdEZ;dFdGZdLdMZ?dNdOZ@dPdQZAdRdSZBdTdUZCdVdWZDdXdYZEdZd[ZFd\d]ZGd^d_ZHd`daZIdbdcZJdddeZKdfdgZLdS)o DisplayWindowNFTZfixedTZdimgreybaseZ darkorangemainZcrimsonsampleZ bluevioletenvZgreendTcCs |jdS)N) mainwindow)selfr$/home/armin/python/DTA/DTAdisplay.py__init__<szDisplayWindow.__init__cCs |rdSdS)Nz#004200z#3b3b3er)r conditionrrr framecolorDszDisplayWindow.framecolorcCs |rdSdS)Nz#006400z#3b3b3er)rrrrr buttoncolorFszDisplayWindow.buttoncolorcCs |rdSdS)Nz#008b20z#47474ar)rrrrractivebuttoncolorIszDisplayWindow.activebuttoncolorcCs|j|_||_dS)N) currentcallprevcall)rfunctionrrrpushcallLszDisplayWindow.pushcallcCs|j|_||_dS)N) active_indexprevious_index)r new_indexrrr pushindexPszDisplayWindow.pushindexc sHjjjdkrZtj_jjdd(jjddjjddjjdd xjjD] }|j qfWjj d tj jtj ddd }|j ddd d d tj|ddddd}|jd d dtj jtj ddd }|j ddd d d tj|dddddjd}|jd d dt|d}tj jtj djdd }|j ddd d d tj|djdddjdtd}|jd d dtj jtj ddd }|j ddd d d tj|djdddjdfdd d}|jd d dt|d!}jjddd"dd#gdd$d%jjddd"dd#gdd&d%jjd'jjjdS))Nz %dx%d+%d+%drblack)bgz *foregroundz*highlightThicknessg333333?uDTA kiértékelő)masterrelief borderwidthr#)rowcolumnpadxpadyuMérés betöltése:white)r$textr#fgactiveforeground)r*r+r z#000064uBeállításokz#00008Bz#006ec5)r$r-r#r.r/activebackgroundcommanduÁbrázolási beállításokFu Kilépész#004200uÚj mérés betöltéseTcsjdfddS)NuÚj mérés betöltésecs jdS)NT) evalwindowr)rrrsz...) newfilewindowr)rrrr4sz*DisplayWindow.mainwindow..uÚj DTA mérés betöltéserK)weightminsize2ZWM_DELETE_WINDOW)r r!rr)rrwindowtkZTkZgeometryZ configureZ option_addwinfo_childrendestroytitleFrameRAISEDgridLabelpackButton optionswindowrrrrquitcolumnconfigure rowconfigureZprotocol on_closingZmainloop)rwidgetframelabel label_ttpr)rrrTs`      $, zDisplayWindow.mainwindowcCsx|jjD] }|jq Wtj|jtjddd}|jdddddtj||ddddd}|jddd t j }|r||_ |j |j |j |n|jdS) Nrr")r$r%r&r#r')r(r)r*r+u megnyitása... (másik ablak)r,)r$r-r#r.r/)r*r+)r;r=r>r<r@rArBrCrDDTAutilnewactive_measurementshow setfigtitler)rZmtyper2rKrLrMZtemprrrr5s"  zDisplayWindow.newfilewindowc Cs|r|j|jx|jjD] }|jqW|jjdtj|jtjddd}|j dddddtj |dd d d d |j d }|j ddd t |d}tj|jtjd|j|jd}|j dddddtj ||jrdnd|j|jd d |j|j|jd }|j ddd t |d}|jrtj|jtjd|jdd}|j dddddtj |d|jjd|jdd d |jd|jd }|j ddd t |d}dS)NuBeállításokr z#800080)r$r%r&r#rr')r(r)r*r+Visszaz#8B008Br,z#a841b0)r$r-r#r.r/r1r2)r*r+uVissza a főmenübez Legend: bez Legend: kiu$Legyen-e színmagyarázat az ábránTu Ábracím: ""uÁbracím megadása)rrFr;r=r>r?r<r@rArBrErrDrrbLegendrr toggleLegendrQfigtitlesetFigTitleWindow)r bPushcallrKrLrMrNrrrrFsD    4 2 zDisplayWindow.optionswindowcCs*|j |_|j|jdd|jdddS)NT) bKeepZoomF)rZ)rVrRrQrF)rrrrrWs zDisplayWindow.toggleLegendcCs|j |_|jdddS)NF)rZ) bAutoZoomrF)rrrrtoggleAutoZooms zDisplayWindow.toggleAutoZoomc sd jjj_js*tdjxjjD] }|jq6Wjj d|r^j t j jt j djjjojjojjpjjd}|jdddddt j|djjjo҈jjo҈jjp҈jjd d jjjojjojjpjjfd d d }|jddd t|d}t j jt j ddd}|jdddddt j|ddd d djd }|jddd t|d}t j jt j ddd}|jdddddt j|ddd d dfdd d }|jddd t|d}t j jt j ddd}|jdddddt j|jdkrdnddd d d jd }|jddd t|jdkrRd!nd"}t j jt j djd#d}|jd$ddddt j|d%jd#d d jd#td }|jddd jd&krt j jt j djjj pjjojjd}|jdddddt j|jjs d'nd(jjj pBjjoBjjjjj pdjjodjjd d fd)d d*}|jddd t|d+}t j jt j djjj ojjd}|jdddddjjr(t j|d,jjj ojjjjj ojjd d fd-d d*}nt j|d,d.d d d/}|jddd t|d0}t j jt j djjjd}|jdddddjjrt j|d1jjjjjjd d fd2d d*}nt j|d1d.d d d/}|jddd t|d3}jjrt j jt j dd4d}|jd$ddddt j|d5t t!jj"d6t t#t$j%jj"d7d8t t#t$j&jj"d7d9d4d d d/}|jddd t j jt j djd#d}|jd$ddddt j|d:jd#d d jd#fd;d d }|jddd jdk r$t j jt j djjj d}|jdddddt j|jjsNdd d*}|jddd t|d?}t j jt j djjj' d}|jdddddt j|jj'sd@ndAjjj' jjj' d d fdBd d*}|jddd t|dC}t j jt j djjj( d}|jdddddt j|jj(srdDndEjjj( jjj( d d fdFd d*}|jddd t|dG}t j jt j djjj ojj'ojj(d}|jdddddjj rjj'rjj(rt j|dHjjj oLjj'oLjj(jjj onjj'onjj(d d fdId d*}nt j|dJd.d d d/}|jddd t|dK}t j jt j djd#d}|jd$ddddt j|dLjd#jd#d d fdMd d*}|jddd t|dN}jj)ddddd$dgddOdPjj*ddddd$dgddQdPdS)RNz4Error : No active measurementuDTA kiértékeléser )r$r%r&r#rr')r(r)r*r+uÚj mérés betöltéser,csjdjS)NuÚj mérés betöltése)r5r3r)rrrr4sz*DisplayWindow.evalwindow..)r$r-r#r.r/r1r2)r*r+uÚj DTA mérés betöltésez#000064rr0uBeállításokz#00008Bz#006ec5uÁbrázolási beállításokz#000080u Ábrázolz#0000CDcs jjS)N)rRrQr)rrrr4'suGÁbra újrarajzolása Ha becsuktad az ablakot, ezzel tudod visszahozni.z#800080ruVáltás dT-reu Váltás T-rez#8B008Bz#a841b0u5Váltás a dT ábrázolására és kiértékeléséreu9Váltás a T1, T2 ábrázolására és kiértékeléséreFr6u Kilépésru1) Alapvonal illesztéseu1) Alapvonal módosításacs jjS)N)selectbaselinewindowr3r)rrrr4Ks)r$r-r#r1r.r/r2uAlapvonal illesztéseu2) Különbség levonásacsjtjjS)N)evalexecDTAeval differencer3r)rrrr4Xsz#3b3b3e)r$r-r#r.r/u.Alapvonal különbség levonása az adatokbólu3) Integráláscs jjS)N)selectintegralwindowr3r)rrrr4gsu'Görbe integráljánákat kiszámolásar"u Integrál [z] = (z.2fz +/- z) CsuIntegrálok törlésecs jjS)N)clear_integralbuffer_windowr3r)rrrr4su1) Th kiszámolásau1) Th újraszámolásacs jjS)N)selectThwindowr3r)rrrr4suSA h paraméter meghatározásához szükséges hőmérséklet (Th) megszerkesztéseu2) Előszakasz illesztéseu2) Előszakasz módosításacs jjS)N)selectfuteswindowr3r)rrrr4su(Átalakulás előtti szakasz illesztéseu$3) Átalakulási szakasz illesztéseu%3) Átalakulás szakasz módosításacs jjS)N)selectatalakulaswindowr3r)rrrr4su!Átalakulási szakasz illesztéseu4) Metszéspont számolásacsjtjjS)N)r_r` intersectionr3r)rrrr4su3) Metszéspont számolásau<A két illesztett egyenes metszéspontjának meghatározásau6) Maximum meghatározásacs jjS)N)selectmaxwindowr3r)rrrr4suDermedés esetén nem illeszthető metszéspont (pl. ón esetén) helyett átalakulás maximum hőmérsékletének meghatározásar7)r8r9r:)+rr3evalcallrQprintrr;r=r>r?rSr<r@rAr bIntegratedbThbTmpbMaxT1rBrErrrDrrF displaymode switchmoderGbBasebDiffrCstrlen integralsformatnpZaverageZstdbMp1bMp2rHrI)rrSrKrLrMrNr)rrr3s2   *d    *$ (n  N  6  `, F F F ( b , zDisplayWindow.evalwindowc Cs4|jdkr0|jdx|jjD] }|jq"W|jjd|jjdddd|jjddddtj |jtj ddd}|j ddd d d tj |d t d|jd d d d}|jd d d|jjdddd|jjddddtj |jtj ddd}|j ddd d d tj |d|jd|jd d d d}|jd d ddS)NuBiztos ki akarsz lépni?rr r7)r8r9r:z#3b3b3e)r$r%r&r#r')r(r)r*r+u KilépésFr,)r$r-r2r#r1r.r/)r*r+rT)rrr;r=r>r?rHrIr<r@rArBrErGrrDr)rrKrLrMrrrrJs2     zDisplayWindow.on_closingcCs|jjj|jd|_dS)N)figurecanvasmpl_disconnectccloseid)reventrrron_figure_closeszDisplayWindow.on_figure_closecCs4|jdkrd|_nd|_|j|jdd|jdS)NrrF)r[)rorRrQr3)rrrrrps  zDisplayWindow.switchmodec s&xjjD] }|jq Wjjdjjddddjjddddtjjtjddd}|j ddd d d tj |d fd d dj dddd}|j d d djjddddjjddddtjjtjddd}|j ddd d d tj |ddj dddd}|j d d ddS)NzBiztos vagy benne?rr r7)r8r9r:z#3b3b3e)r$r%r&r#r')r(r)r*r+uTörléscs jS)N)clear_integralbufferr)parentrrrr4 sz;DisplayWindow.clear_integralbuffer_window..Fr,)r$r-r2r#r1r.r/)r*r+uMégsem) r;r=r>r?rHrIr<r@rArBrErrD)rrrKrLrMr)rrrrcs.  (z)DisplayWindow.clear_integralbuffer_windowcCs&d|j_g|j_|j|j|dS)NF)rQrkrurR)rrrrrrs z"DisplayWindow.clear_integralbufferc s|jstddS|js6tj|_|jjjd|j|_|rtjj j |j sXdtj_ ddl m}x0tjjD]}t||rr|jqrWntj|jdkrjr̈jrtjjj|jdddntjjj|jdddtjdtjd nLtjjj|jd d dtjjj|jd d dtjdtjdtjj}tjj }|j!rxtj!dddt"j#jdjd3d}|jdkr.jrjrtj|t$j%|dd|jdddnXj&rfdd}tj||||jdddn&tj|t$j%|j'j(|jdddnΈj) rj*rt"j#j+j,d} t"j#j,jd4d} j-rt"j#j,j.d} j/rj0j.krt"j#j,j0dd} tj| t$j%| j1j2|jddtj| t$j%| j1j2|jdd6dj) rˆj-rt"j#jdj.d} j*r:t"j#j,j.d} j/rfj0j,krft"j#j0dj.d} t"j#j.j3d} tj| t$j%| j4j5|jdd8dtj| t$j%| j4j5|jddj) rj/rtjj0gj6gdddd tj7j6d!d"d#t8t9j6d$d%d&j:rtjj;jj<jj<jj<krXjj<n jj<jj<jj<krjj<n jj<tjj;jj=jj=jj=krΈjj=n jj=jj=jj=krjj=n jj=tjj;jj>jj>jj>krDjj>n jj>jj>jj>krtjj>n jj>tjjj>gj?gdddd tj7j?d'd"d(t8t9j?d$d%d&j)rtj7j@d!d"d)t8t9j@d$d%d&d*d+d,d-g} x>tAtB|jCD],} |jC| }|rtjD|| | d.d:d/qWx(|jED]}|rPtjD|d0d"d: No selected dataZ close_eventr)LineCollectionruHőmérséklet különbség)colorrMzt (s)z $\Delta$T $(^{\circ}\mathrm{C})$r uMintatartó hőmérsékleter uKörnyezet hőmérsékletezT $(^{\circ}\mathrm{C})$truez--) linestyler dr Z Alapvonalcsrg}xh|D]`}|jkr2|jtj|jjq |jkrR|jtj|q |jtj|j j q W|S)N) Zbase_endappendrOflinbase_abase_bZ baseUp_startfloatZ basesplineZbaseUp_aZbaseUp_b)Zx_arrZret_yZx_i)measrrgetcomplexbase_s   z*DisplayWindow.show..getcomplexbaseuAlapvonal illesztésr )r)rrZbog?g@)Z linewidthZ markersizeZdarkbluegQ?z$\mathrm{T}_\mathrm{mp}$ = z.2fz $^{\circ}\mathrm{C}$)yralpharMZbluez$\mathrm{T}_\mathrm{h}$ = z $\mathrm{T}_{1}^\mathrm{max}$ = z#FF00FFz#FF1493z#4B0082 lightseagreeng?)xrrrZgreyF)Zblockrr r )rrr r )rrr r )rrr r )rr)MrQrjrzpltr{ mpl_connectrr}ZgcalinesclearrVZlegend_Zmatplotlib.collectionsrZ get_children isinstanceremoveZclfrorqrrZplotrZdTdiffedcolorsrZxlabelZylabelZT1ZT2Zget_ylimZget_xlimrBrwZlinspacerOrZ bComplexBaserrrnrxZ mp1_startZmp1_endryZ mp2_startrmZTmp_xZmp1_aZmp1_bZmp2_endZmp2_aZmp2_bZTmpZaxhlinersrvrlZvlinesZTh_xminZTh_xmaxZTh_xZThZmaxT1rangertrangeSelectorGuideLinesZaxvlinerangeSelectorGhosts scaletodataZxlimZylimZlegendr?rXrR) rrr[rZchildZ auto_ylimZ auto_xlimZxsrZxs1Zxs2gcolorsir)rrrR&s             $ *$&&$(vvv"((      zDisplayWindow.showc sxjjD] }|jq Wjjdtjjtjddd}|jdddddtj|ddd d d }|j ddd tjjtjdd d}|jdddddtj |d dd d dfddd}|j ddd t |d}tjjtjddd}|jdddddtj |ddj dd djdjjdj tjjtjdjdd}|jdddddtj |dj djdd d fddd}|j ddd t |d}dS)Nu Mérés címerr")r$r%r&r#r r')r(r)r*r+u2Mérés címe (ón/ólom, α fűtési sebesség?):r,)r$r-r#r.r/)r*r+z#800080rTz#8B008Bz#a841b0cs jddS)NF)rZ)rFr)rrrr4sz1DisplayWindow.setFigTitleWindow..)r$r-r#r.r/r1r2uVissza a főmenüberF)r$Zheightwidthr#r.endu, α = TrZOkcs jS)N)finishFigTitleWindowr)rtextBoxrrr4s)r$r-r#r1r.r/r2u Cím bevitele)r;r=r>r?r<r@rArBrCrDrErZTextrinsertrQrXrr)rrKrLrMrNr)rrrrYsL    .zDisplayWindow.setFigTitleWindowcCs$|jdd|j_|j|jdS)Nz1.0zend-1c)getrQrXrSr)rZ textBoxObjrrrrsz"DisplayWindow.finishFigTitleWindowautocCs4|dkr|jjd}|j|j|jjjj|dS)Nru ábra)rQrXrRrzr{ZmanagerZset_window_title)rZwintitlerrrrSs  zDisplayWindow.setfigtitlecCsVd|j_|j|jd|_||_||_tj|_d|_ |j rJt j t |jd|jdS)NFr6uAlapvonal illesztéser )rQrqrRnumberofranges parentfuncfinishfunctionr`Zfitbase evaltargetrangewindowtitler\rOautozoomrrangeSelectorMainWindow)rrrrrr^s z"DisplayWindow.selectbaselinewindowcCsBd|_||_||_tj|_d|_|jr6tj t |j d|j dS)NruElőszakasz illesztéser ) rrrr`Zfitfutesrrr\rOrrrQr)rrrrrreszDisplayWindow.selectfuteswindowcCsBd|_||_||_tj|_d|_|jr6tj t |j d|j dS)Nru!Átalakulási szakasz illesztéser ) rrrr`Z fitatalakulasrrr\rOrrrQr)rrrrrrf"sz$DisplayWindow.selectatalakulaswindowcCs$||j|j|jdd|dS)NT)r[)rQrR)rtargetrrrrr_.s zDisplayWindow.evalexeccCsBd|_||_||_tj|_d|_|jr6tj t |j d|j dS)Nru$Átalakulás határok kiválasztásar ) rrrr`ZgetThrrr\rOrrrQr)rrrrrrd4szDisplayWindow.selectThwindowcsLd__fdd_tj_d_jr@tj t j dj dS)Nrcs jS)N) maximum_doner)rrrrr4Dsz/DisplayWindow.selectmaxwindow..u$Átalakulás határok kiválasztásar ) rrrr`Z getMaximumT1rrr\rOrrrQr)rrr)rrrrhAszDisplayWindow.selectmaxwindowcCs"d|j_d|j_d|j_|dS)NF)rQrxryrm)rrrrrrMszDisplayWindow.maximum_donecCsBd|_||_||_tj|_d|_|jr6tj t |j d|j dS)NruIntegrál számításaint) rrrr`Z integraterrr\rOrrrQr)rrrrrrbTsz"DisplayWindow.selectintegralwindowcCs<|j|||_|js*|jjjd|j|_d|_|jdS)NZbutton_press_eventT) r boundstargetbCRiggedrzr{ronclickcid rig_arrows)rZtargetfrrrr rig_for_inputds  zDisplayWindow.rig_for_inputcCs$|js|jjjd|j|_d|_dS)NZkey_press_eventT)bKRiggedrzr{ron_presskid)rrrrrlszDisplayWindow.rig_arrowscCs`|j|||_|j||_d|j|<|j||j|<d|j|<d|_|j|jd|j dS)NFT) rraBounds modifybufferrr bModifyingrRrQupdateRangeSelectorMainWindow)rZ new_targetfrrrrmodifyRangeSelectts    zDisplayWindow.modifyRangeSelectcCs@|j|j|j<d|j|j<|j|j|j<d|_d|_|jdS)NFr r)rrrrrrr)rrrr cancelModifys  zDisplayWindow.cancelModifycCs`|jj r|jjdkrd|j_d|_d|_dddg|_dddg|_|j|jdd|j|dS)NrTF)r[) rQrqrrrrrrRbackfromrangeselect)rrrrrcancelrangeselects  zDisplayWindow.cancelrangeselectcCs|j|dS)N) stop_input)rrrrrrsz!DisplayWindow.backfromrangeselectcCs<|jr|jjj|j|jr,|jjj|jd|_d|_dS)NF)rrzr{r|rrr)rrrrrs zDisplayWindow.stop_inputcCs|js|jdkr|jdkr<|j|jd|jkr.)r$r-r#r1r.r/r2)r*r+Tu"Alsó határ: <ábrán dupla katt>)r$r-r#r.r/uaElfogad középső egérgombbal való kattintást is Határ lerakása után nyilakkal mozgathatóru(Mégse módosít))r$r-r2r#r1r.r/z#FF00FFuAlsó határ: r0u (Módosít)csjjdS)Nr)rrr)rrrr4Bsu#Felső határ: <ábrán dupla katt>z#FF1493uFelső határ: csjjdS)Nr )rrr)rrrr4qsu$Alsó határ 2: <ábrán dupla katt>z#4B0082uAlsó határ 2: csjjdS)Nr)rrr)rrrr4sr6u%Felső határ 2: <ábrán dupla katt>ruFelső határ 2: csjjdS)Nr0)rrr)rrrr4sz#000080z Zoom resetz#0000CDz#006ec5cs jjS)N)rRrQr)rrrr4s)r$r-r#r.r/r1r2u)Nagyítás alapértelmezettbe állításauHIllesztése elvégzése (egyenes illesztése a két kijelölt szakaszra))r[)r;r=r>r?rrHrIr<r@rArrBrErrrDrrCrrrrrrsrrrangeSelectorFinishrrrRrQ)rrKrLrMrNr)rrrsz ,  &(, & (,& & (,& & (,  R(  z+DisplayWindow.updateRangeSelectorMainWindowcCs||_|jdS)N)rr)rfuncrrrmodEvalThenFinishszDisplayWindow.modEvalThenFinishcCsP|jddddg|_ddddg|_|j|j|j|j|jdd|jdS)NFT)r[)rrrrrQrrRr)rrrrr s z!DisplayWindow.rangeSelectorFinishrrr)T)F)F)r)M__name__ __module__ __qualname__r;rrrirQrrzrrrrrr}rrrrrrorrrrrrZ dualfitlimitrBrVrZautoshowr\rrrrrrrrr5rFrWr]r3rJrrprcrrRrYrrSr^rerfr_rdrhrrbrrrrrrrrrrrrrrrrrrs  G : T" ! 6       9 r)osZtkinterr<rOZmatplotlib.pyplotZpyplotrZionrcParamsrZnumpyrwr`Z DTAtooltiprrrrrrs