a Qe^@sddlZddlZddlZddlmZedejd<ejd dejd dddl Z ddl Z ddl mZGd d d ZdS) NZpdfzsavefig.formatz keymap.backleftzkeymap.forwardright)Hovertipc@seZdZdZdZdZdZdZdZdZ dZ dZ dZ dZ dZdZdZdZdZdZdZgZgdZgdZdZdZdZdZdZdZdZdZdZ 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*dad#d$Z+d%d&Z,d'd(Z-d)d*Z.d+d,Z/dbd-d.Z0d/d0Z1d1d2Z2dcd3d4Z3d5d6Z4d7d8Z5d9d:Z6d;d<Z7d=d>Z8d?d@Z9dAdBZ:dCdDZ;dEdFZdKdLZ?dMdNZ@dOdPZAdQdRZBdSdTZCdUdVZDdWdXZEdYdZZFd[d\ZGd]d^ZHd_d`ZIdS)d DisplayWindowNFFFFZfixedTZbluedataZdimgreybaseZ darkorangemainZcrimsonexpZgreenT*cCs |dSN) mainwindowselfr(/home/danka/Public/Fajho2.0/FHdisplay.py__init__<szDisplayWindow.__init__cCs|j|_||_dSr) currentcallprevcallrZfunctionrrrpushcall@szDisplayWindow.pushcallcCs|j|_||_dSr) active_indexprevious_index)r new_indexrrr pushindexDszDisplayWindow.pushindexc s@jjdkrZt_jddjjddjddjddjD] }| qdj dtj jtj d dd }|j d d d d d tj|d dddd}|jd d dtj jtj ddd }|j d dd d d tj|dddddjd}|jd d dt|d}tjd}tj jtj d|rFdndd }|j dd d d d tj|d| dd| fddd}|jd d dt|d}tj jtj d|rdndd }|j ddd d d tj|d |dd|fd!dd}|jd d dt|d"}tj jtj d|r6dndd }|j dd#d d d tj|d$|dd|fd%dd}|jd d dt|d&}jrtj jtj dd'd }|j d#d d d d tj|d(d)ddd*jd}|jd d dt|d+}jjgd,dd-d.jjgd,dd/d.jd0jjdS)1Nz %dx%d+%d+%d)iirrblack)bgz *foregroundz*highlightThicknessg333333?uFajhő kiértékelő 2.0rmasterZrelief borderwidthrZrowZcolumnpadxpadyuMérés betöltése:whiter!textrfgactiveforegroundr%r&#000064Beállítások#00008B#006ec5r!r)rr*r+activebackgroundcommandÁbrázolási beállításokz .fh_config#3b3b3e#004200u VízértékcsdjS)NuVízérték mérés) newfilewindow calibwindowrrrrxz*DisplayWindow.mainwindow..u3Vízérték mérés megnyitása és kiértékeléseuBeejtéscsdjS)NuBeejtéses mérés)r9 beejteswindowrrrrr;r<u8Beejtéses fajhőmérés megnyitása és kiértékeléseru RáfűtéscsdjS)NuRáfűtéses mérés)r9 futeswindowrrrrr;r<u?Együtt fűtéses fajhőmérés megnyitása és kiértékelése#800080uElőzőt folytat#8B008B#a841b0uVissza a megnyitott méréshez)rr-rr/KZweightZminsize2ZWM_DELETE_WINDOW)rrwindowtkZTkZgeometryZ configureZ option_addwinfo_childrendestroytitleFrameRAISEDgridLabelpackButton optionswindowrospathexists buttoncoloractivebuttoncoloractive_measurementevalcallcolumnconfigure rowconfigureZprotocol on_closingmainloop)rwidgetframelabel label_ttpZ bCalibFoundrrrrHs        0  ,  ,  zDisplayWindow.mainwindowcCs|jD] }|q tj|jtjddd}|jdddddtj||ddddd}|jddd t }|r||_ | |j | d d |j js||jkrtd |n|dS) Nrrr r#r$u megnyitása... (másik ablak)r'r(r,rzFigure 1ucVigyázat: még hiányoznak a kalibrációs adatok! Először a vízérték mérést értékeld ki!)rFrHrIrGrKrLrMrNrOFHutilnewrWshow setfigtitleZbCalibr:printr)rZmtyper5r]r^r_Ztemprrrr9s(   zDisplayWindow.newfilewindowcCs |rdSdS)Nr8r7rrZ conditionrrr framecolorszDisplayWindow.framecolorcCs |rdSdS)Nz#006400r7rrfrrrrUszDisplayWindow.buttoncolorcCs |rdSdS)Nz#008b20z#47474arrfrrrrVszDisplayWindow.activebuttoncolorc Cs|r||j|jD] }|q|jdtj|jtjddd}|j dddddtj |dd d d d |j d }|j ddd t |d}tj|jtjd||jd}|j dddddtj ||jrdnd||jd d ||j|jd }|j ddd t |d}tj|jtjd||jd}|j dddddtj ||jrLdnd||jd d ||j|jd }|j ddd t |d}|jdS)Nr0r-r?r rr#r$Visszar@r'rAr3r,Vissza a főmenübez Legend: bez Legend: kiu$Legyen-e színmagyarázat az ábránz AutoZoom: bez AutoZoom: kiuhBekapcsolva a program magától odanagyít az ábrába ahova kell illesztéseknél. (Kényelmi funkció))rrQrFrHrIrJrGrKrLrMrPrrOrrgbLegendrUrV toggleLegend bAutoZoomtoggleAutoZoomr\)r bPushcallr]r^r_r`rrrrQsH     4  6 zDisplayWindow.optionswindowcCs&|j |_||j|jdddSNF)rn)rjrcrWrQrrrrrks  zDisplayWindow.toggleLegendcCs|j |_|jdddSro)rlrQrrrrrms zDisplayWindow.toggleAutoZoomc s:jj_js*tdddjD] }| q@j dt j jt j ddd}|jddd d d t j|d d d d djd}|jd d dt|d}t j jt j ddd}|jddd d d t j|ddd d dfddd}|jd d dt|d}t j jt j ddd}|jddd d d t j|ddd d djd}|jd d dt|d}t j jt j djj d}|jddd d d t j|jjsdndjj d d jj fd dd}|jd d dt|d!}t j jt j djj o$jjd}|jddd d d jjrt j|jjs\d"nd#jj otjjjj ojjd d fd$dd%}nt j|d"d&d d d'}|jd d dt|d(}t j jt j djj ojjd}|jd)dd d d jjrft j|d*jj o6jjjj oNjjd d fd+dd%}nt j|d*d&d d d'}|jd d dt|d,}t j jt j djj ojjd}|jddd d d jjr6t j|jjsd-nd.jj ojjjj ojjd d fd/dd%}nt j|d-d&d d d'}|jd d dt|d0}t j jt j djjd}|jd1dd d d jjrt j|d2jjjjd d fd3dd%}nt j|d2d&d d d'}|jd d dt|d4}jjgd5dd6d7jjgd5dd8d7jdS)9Nz4Error : No active measurementuVízérték méréseZ vizertek_abrauVízérték kiértékeléser-r?r rr#r$rhr@r'rAr3r,ri#000080r/ Ábrázol#0000CDr2cs jSrrcrWrrrrr;Er<z+DisplayWindow.calibwindow..GÁbra újrarajzolása Ha becsuktad az ablakot, ezzel tudod visszahozni.r.r0r1r61) Előszakasz illesztése1) Előszakasz módosításacs jSr)selecteloszakaszwindowr:rrrrr;[r<Előszakasz illesztése2) Utószakasz illesztése2) Utószakasz módosításacs jSr)selectutoszakaszwindowr:rrrrr;hr<r!r)rr4r*r+r5r7r(Utószakasz illesztéser(3) Korrigált hőmérséklet számolásacs jSr) calculateTsr:rrrrr;wr<*Korrigált hőmérséklet felintegrálása4) Főszakasz illesztése4) Főszakasz módosításacs jSr)selectfoszakaszwindowr:rrrrr;r<Főszakasz illesztéserBu!5) Vízérték és α számolásacs tjSr)FHevalZcalibrWrrrrr;r<u4Vízérték és hőátadási tényező kiszámolásarr-rr/rBr#rCrDrE)rr:rXrWrerrdrFrHrIrJrGrKrLrMrPrrOrrQrgbBaserUrVbExprNbTsbMainCorrectedrYrZr\rr]r^r_r`rrrr:s        F  \  N  \   6 zDisplayWindow.calibwindowc s^jj_js*tdddjD] }| q@j djj ddddjj ddd dt jjt jdd d }|jddd d d t j|dddddjd}|jd d dt|d}t jjt jddd }|jddd d d t j|dddddfddd}|jd d dt|d}t jjt jddd }|jddd d d t j|dddddjd}|jd d dt|d }t jjt jdjj d }|jddd d d t j|jjsd!nd"jj jj ddfd#dd$}|jd d dt|d%}t jjt jdjj oHjjd }|jddd d d jjrt j|jjsd&nd'jj ojjjj ojjddfd(dd$}nt j|d&d)ddd*}|jd d dt|d+}t jjt jdjj ojjd }|jd,dd d d jjrt j|d-jj oZjjjj orjjddfd.dd$}nt j|d-d)ddd*}|jd d dt|d/}t jjt jdjj oڈjjd }|jddd d d jjrZt j|jjsd0nd1jj o*jjjj oBjjddfd2dd$}nt j|d0d)ddd*}|jd d dt|d3}t jjt jdjjd }|jd4dd d d jjrt j|d5jjjjddfd6dd$}nt j|d5d)ddd*}|jd d dt|d7}jj gd8dddjj gd8dd djdS)9Nz4Error : No active measurementuFajhő mérése ráfűtésselZ rafutes_abrauRáfűtés kiértékeléserr-rCrDrEr?r r#r$rhr@r'rAr3r,rirpr/rqrrr2cs jSrrsrrrrr;r<z+DisplayWindow.futeswindow..rtr.r0r1r6rurvcs jSr)rwr>rrrrr;r<r|rxryrzcs jSr)r{r>rrrrr;r<r7r(r}rr~cs jSr)rr>rrrrr;r<rrrcs jSr)rr>rrrrr; r<rrBu5) Hőkapacitás számolásacs tjSr)rZrafutrWrrrrr;r<uHőkapacitás kiszámolásar)rr>rXrWrerrdrFrHrIrJrYrZrGrKrLrMrPrrOrrQrgrrUrVrrNrrr\rrrrr>s        F  \  N  \   6 zDisplayWindow.futeswindowc s jj_js*tdjD] }|q4j d|r^ ddt j jt j ddd}|jddd d d t j|d d d d djd}|jd d dt|d}t j jt j ddd}|jddd d d t j|ddd d djd}|jd d dt|d}t j jt j ddd}|jddd d d t j|ddd d dfddd}|jd d dt|d}t j jt j djj d}|jddd d d t j|jjsdndjj jj d d fd dd!}|jd d dt|d"}t j jt j djj o(jjd}|jddd d d jjrt j|jjs`d#nd$jj oxjjjj ojjd d fd%dd!}nt j|d#d&d d d'}|jd d dt|d(}t j jt j djj ojjd}|jd)dd d d jjrjt j|d*jj o:jjjj oRjjd d fd+dd!}nt j|d*d&d d d'}|jd d dt|d,}t j jt j djjd}|jddd d d jjrt j|d-jjjjd d fd.dd!}nt j|d-d&d d d'}|jd d dt|d/}t j jt j djjd}|jd0dd d d jjrt j|d1jjjjd d fd2dd!}nt j|d1d&d d d'}|jd d dt|d3}jjgd4dd5d6jjgd4dd7d6jdS)8Nz6Error : No active measurementuBeejtés kiértékeléseuFajhő mérése beejtésselZ beejtes_abrar-r?r rr#r$rhr@r'rAr3r,rir.r/r0r1r2r6rprqrrcs jSrrsrrrrr;Xr<z-DisplayWindow.beejteswindow..rtrurvcs jSr)rwr=rrrrr;dr<r|rxryrzcs jSr)r{r=rrrrr;pr<r7r(r}rr~cs jSr)rr=rrrrr;r<ru4) Integráláscs jSr)selectintegralwindowr=rrrrr;r<u5Hőkapacitás kiszámolása a görbe integráljábólrBu!5) Variált határú integráláscsfddS)Ncs dSNF)r=rrrrr;r<z?DisplayWindow.beejteswindow....)selectSIwindowrrrrr;r<u_Integrálás variált felső határral Hőkapacitás felsőhatár függésének vizsgálatáhozrrCrDrE)rr=rXrWrerrFrHrIrJrdrGrKrLrMrPrrOrrQrgrrUrVrrNrrYrZr\)rrdr]r^r_r`rrrr=+s        F  \  N   6   6 zDisplayWindow.beejteswindowc Cs:|jdkr6|d|jD] }|q |jd|jjdddd|jjddddtj |jtj ddd}|j ddd d d tj |d t d|d d d d}|jd d d|jjdddd|jjddddtj |jtj ddd}|j ddd d d tj |d|jd|d d d d}|jd d d|jdS)NuBiztos ki akarsz lépni?rr-rCrDrEr7r r#r$u KilépésFr'r!r)r5rr4r*r+r,rh)rrrFrHrIrJrYrZrGrKrLrMrPquitrVrOrr\rr]r^r_rrrr[s8     zDisplayWindow.on_closingcCs|jj|jd|_dSr)figurecanvasmpl_disconnectccloseidreventrrron_figure_closeszDisplayWindow.on_figure_closec s|jstddS|js6t|_|jjd|j|_|rJtj nt tj j j|jdddtdtdt}t}|jrtjdd d tj d j d d }jr\jrtj |t|jjj|jdddnXjr6fdd}tj ||||jdddn&tj |t|j j!|jdddj"rtj j j#|jdddt}j$rtj |t|j%j&|jdj'rdnddj(r tj)j*d }tj |t|j+j,j-|jdddj.r`tj |t|j/j0j1|jdddtj |t|d j1|jdd dgd}t2t3|j4D],} |j4| }|rvtj5||| dddqv|j6D]}|rtj5|d d!ddq|j7rt8|t9||j:rt;t<|j=tj>d"d#dS)$Nz(Error : No selected dataZ close_eventr uKaloriméter hőmérséklet)colorr_zt (s)zT $(^{\circ}C)$truez--) linestylerr dr u#Előszakasz illesztés (exp. korr.)csbg}|D]T}|jkr0|t|jjq|jkrP|t|q|j q|Sr) Zbase_endappendraflinbase_abase_bZ exp_startfloatZ basesplineexp_c)Zx_arrZret_yZx_imeasrrgetcomplexbases  z*DisplayWindow.show..getcomplexbaseuElőszakasz illesztésruKorrigált hőmérsékletr uFőszakasz illesztés (korr.)uFőszakasz illesztésuExp. főszakasz illesztésr uUtószakasz illesztés)rr#FF00FF#FF1493#4B0082g?)r)r-r-)xrZalpharZgreygQ?F)block)?rWrerpltr mpl_connectrrZgcalinesclearclfplotrycolorsxlabelylabelZget_ylimZget_xlimrMnpZlinspacerZbBaseExpraZfexpZ baseexp_AZ baseexp_bZ baseexp_cZ bBaseSplinerrrrZTsZbMainZmain_aZmain_brZbMainExpZ mainexp_startZ mainexp_endZ mainexp_AZ mainexp_bZ mainexp_crZexp_AZexp_brrangelenrangeSelectorGuideLinesZaxvlinerangeSelectorGhosts scaletodataZxlimZylimrjZlegendrJfigtitlerc) rr bKeepZoomZ auto_ylimZ auto_xlimZxsrZxs2rirrrrcsf     , & 2**$      zDisplayWindow.showcCs&||_||j|jjj|dSr)rrcrWrrZmanagerZset_window_title)rrJZwintitlerrrrd7s zDisplayWindow.setfigtitlec sjjD] }|qjdjjddddjjddddtj jddd}|j ddd d d tj |d dd d d }|j d d dtj jtj ddd}|j ddd d d tj|dddd d fddd}|j d d dtj jtj ddd}|j ddd d d tj|dddd d fddd}|j d d dtj jtj ddd}|j ddd d d tj|dddd d jd}|j d d djdS)NuKettős illesztésrr-rCrDrEr)r!r"rr#r$uKettős illesztés:r'r(r,Tr ZSplinecs dS)NZspline do_dualfitrrrrr;[r<z-DisplayWindow.dualfitwindow..r|uExponenciáliscs dS)Nr rrrrrr;fr<Fru Kihagyás)r dualfitwindowrFrHrIrJrYrZrGrKrMrNrOrLrgrPrUrV parentfuncr\rrrrr>sT   ,,&zDisplayWindow.dualfitwindowcCs0t|j||j|jr$||j|dSr)rZdualfitrW dualfitlimitautoshowrcr)rmethodrrrrws zDisplayWindow.do_dualfitcCsRd|_||_||_|jjr"|j|_tj|_d|_ |j rFt t |jd|dS)Nrrxr )numberofrangesrfinishfunctionrWrrrZfitbase evaltargetrangewindowtitlerlraautozoomrrangeSelectorMainWindowrparentrrrrw~sz$DisplayWindow.selecteloszakaszwindowcCsDd|_||_|j|_tj|_d|_|jr8t t |j d| dS)Nrr}r )rrrrrZfitexprrrlrarrrWrrrrrr{sz$DisplayWindow.selectutoszakaszwindowcCsBd|_||_||_tj|_d|_|jr6t t |j d| dS)NrIntegrál számításaint) rrrrZ integraterrrlrarrrWrrrrrrsz"DisplayWindow.selectintegralwindowcCsDd|_||_|j|_tj|_d|_|jr8t t |j d| dS)Nr/rr)rrdrawSIrrZserialintegrateOptimizedrrrlrarrrWrrrrrrszDisplayWindow.selectSIwindowcCs<tt||tdtdtd|dS)NuIntegrál felső határa (s)z$C_{m}$ $(J/K)$u%Variált felső határú integrálás)rrrrrrJ)ruplimscmsr5rrrrs     zDisplayWindow.drawSIcCs(t|j|jr||j|dSr)rZgetTsOptimizedrWrrcrrrrrs  zDisplayWindow.calculateTscCsBd|_||_||_tj|_d|_|jr6t t |j d| dS)Nrrr ) rrrrZfitmaincorrectedrrrlrarrrWrrrrrrsz#DisplayWindow.selectfoszakaszwindowcCs<||||_|js*|jjd|j|_d|_|dS)NZbutton_press_eventT) r boundstargetbCRiggedrrronclickcid rig_arrows)rZtargetfrrrr rig_for_inputs  zDisplayWindow.rig_for_inputcCs$|js|jjd|j|_d|_dS)NZkey_press_eventT)bKRiggedrrron_presskidrrrrrszDisplayWindow.rig_arrowscCs`||||_|j||_d|j|<|j||j|<d|j|<d|_||jd| dS)NFT) rraBounds modifybufferrr bModifyingrcrWupdateRangeSelectorMainWindow)rZ new_targetfrrrrmodifyRangeSelects    zDisplayWindow.modifyRangeSelectcCs@|j|j|j<d|j|j<|j|j|j<d|_d|_|dS)NFr )rrrrrrrrrrr cancelModifys  zDisplayWindow.cancelModifycCs:d|_d|_gd|_gd|_||j||dS)Nr)rrrrrcrWbackfromrangeselectrrrrcancelrangeselects    zDisplayWindow.cancelrangeselectcCs||dSr) stop_inputrrrrrsz!DisplayWindow.backfromrangeselectcCs<|jr|jj|j|jr,|jj|jd|_d|_dSr)rrrrrrrrrrrrs zDisplayWindow.stop_inputcCs|js|jdkr|jdkr@|jdr@|jd|jkr@tddS|jdkr|jd|jkrftddS|jdr|jd|jkrtddS|jdkr|jd|jkrtddSd|_||j|j|j<|j|j|j<d|j |j<| dSdS)Nrrr-u0A magas határ nem lehet kisebb az alacsonynál!Fu:A felső magas határ nem lehet kisebb az alacsonyabbnál!T) ZdblclickZbuttonrrZxdatarerrrrrrrrrrs2    zDisplayWindow.onclickcCsV|jr dS|jdkrR|j|jdrR|jdkrR|j|jd|j|jdkrRdS|jdkr|j|jdr|jdkr|j|jd|j|jdkrdS|jdkrv|j|jd7<|j|jd7<||jdgd}tj|j tj d||jd}|j |jdd d d d |j d kr&d nddg}tj |||jtt|j|jd||jddd}|jd d ddS|jdkrR|j|jd8<|j|jd8<||jdgd}tj|j tj d||jd}|j |jdd d d d |j d krd nddg}tj |||jtt|j|jd||jddd}|jd d ddSdS)NFr-rg?rTrr r#r$Alsó határ: rFelső határ: Felső határ 1: Felső határ 2: r'r(r,)rrrkeyrrcrWrGrKrFrLrMrrNstrroundrO)rrrr^Ztextsr_rrrr&sR** 6 6zDisplayWindow.on_presscCsH||jd|_d|_d|_gd|_gd|_gd|_|dS)NFr) rrrrrrrrrrrrrr_s    z%DisplayWindow.rangeSelectorMainWindowc sjD] }|q jjjjddddjjddddtjjtj d dd}|j ddddd tj |d ddd d fd d d}|jdddjdstjjtj d dd}|j ddddd tj|d dd d d}t|d}|jdddjdjrftjjtj d dd}|j ddddd tj |dj ddd d d}|jdddntjjtj ddd}|j ddddd tj|dttjdddd d d}|jdddjsftjjtj d dd}|j ddddd tj |d ddd d fdd d}|jdddjdsXjdrXtjjtj d dd}|j ddddd tj|d dd d d}t|d}|jdddjdjrVtjjtj d dd}|j ddddd tj |d ddd d jd}|jdddnjdrVtjjtj ddd}|j ddddd tj|jdkrdttjddndttjdddd d d}|jdddjsVtjjtj d dd}|j ddddd tj |d ddd d fd d d}|jdddjdsTjdrTjd!krTtjjtj d dd}|j ddddd tj|d" dd d d}t|d}|jdddjdjr.tjjtj d dd}|j ddddd tj |d ddd d jd}|jdddnڈjdr.tjjtj dd#d}|j ddddd tj|d$ttjddd#d d d}|jdddjs.tjjtj d dd}|j ddddd tj |d ddd d fd%d d}|jdddtjjtj dd&d}|j dd!ddd tj |d'd(d d d)fd*d d+}|jdddt|d,}js:jddksˆjddkr:jdkr:tjjtj d dd}|j d!dddd tj |j ddd d jd}|jdddjjjgd-dddjjgd-dddjjdd.d/djjdd0jdS)1Nrr-rCrDrEFr r#r$rhr'cs jSr)rrrrrrr;|r<z=DisplayWindow.updateRangeSelectorMainWindow..r|r,Tu"Alsó határ: <ábrán dupla katt>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)rrrru (Módosít)csjdS)Nrrrrrrrr;r<u#Felső határ: <ábrán dupla katt>rrrcsjdS)Nr-rrrrrr;r<r/u%Felső határ 2: <ábrán dupla katt>rrcsjdS)Nrrrrrrr; r<rpz Zoom resetrrr2cs jSrrsrrrrr;r<r3u)Nagyítás alapértelmezettbe állítása)rr-rr/rB)r) rFrHrIrJrrYrZrGrKrLrgrMrPrUrVrOrrNrrrrrrrrrangeSelectorFinishrrrcrWr\rrrrrjsL ,  &(, & L,$ & (,  4( z+DisplayWindow.updateRangeSelectorMainWindowcCs|gd|_gd|_|jdkrX||j|jd|jd||j|nL||j|jd|jd|jd\}}||j|r|r||||j dS)Nrrrr-) rrrrrrWrrcrr)rrrrrrr1s     ( z!DisplayWindow.rangeSelectorFinish)T)T)F)J__name__ __module__ __qualname__rFrrrXrWrrrrrrrrrrrrrrrrrrrrrrMrjrrrlrrrrrr9rgrUrVrQrkrmr:r>r=r[rrcrdrrrwr{rrrrrrrrrrrrrrrrrrrrrrsi ; $ c9       $9 Hr)rRZtkinterrGraZmatplotlib.pyplotZpyplotrZionrcParamsremoveZnumpyrrZ FHtooltiprrrrrrs