guiqwt v2.2.1 documentation · guiqwt.label: labels, curve plot legends guiqwt.shapes: polygon,...
Transcript of guiqwt v2.2.1 documentation · guiqwt.label: labels, curve plot legends guiqwt.shapes: polygon,...
-
indexmodules |next |guiqwtv2.2.1documentation »
-
guiqwt
BasedonPyQwt(plottingwidgetsforPyQt4graphicaluserinterfaces)andonthescientificmodulesNumPyandSciPy,guiqwtisaPythonlibraryprovidingefficient2Ddata-plottingfeatures(curve/imagevisualizationandrelatedtools)forinteractivecomputingandsignal/imageprocessingapplicationdevelopment.
Externalresources:
Bugreportsandfeaturerequests:GoogleCodeHelp,supportanddiscussionsaroundtheproject:GoogleGroup
Contents:
OverviewPerformancesFeaturesHowitworks
InstallationDependenciesInstallation
http://guiqwt.googlecode.comhttp://groups.google.fr/group/guidata_guiqwt
-
HelpandsupportHowtocontribute
SubmittingchangesCodingguidelinesPyQtv4.4compatibilityissuesPyQt/PySidecompatibility
ExamplesThetestlauncherCurveplottingCurvefittingImagevisualizationHistogramsOtherexamples
Sift,theSignalandImageFilteringToolMakingexecutableWindowsprograms
ExampleGUIQwtreference
guiqwt.pyplotguiqwt.widgets.fitguiqwt.plotguiqwt.builderguiqwt.panelsguiqwt.signalsguiqwt.baseplotguiqwt.curveguiqwt.imageguiqwt.histogramguiqwt.cross_sectionguiqwt.annotationsguiqwt.shapes
-
indexmodules |next |guiqwtv2.2.1documentation »
guiqwt.labelguiqwt.toolsguiqwt.stylesguiqwt.ioresizedialogrotatecrop
Indicesandtables:
IndexSearchPage
©Copyright2009-2012,CEA-Commissariatàl'EnergieAtomiqueetauxEnergiesAlternatives.
CreatedusingSphinx1.0.8.
http://sphinx.pocoo.org/
-
indexmodules |guiqwtv2.2.1documentation »
-
PythonModuleIndex
a|b|c|g|h|i|l|p|s|t|w
aguiqwt.annotationsbguiqwt.baseplotguiqwt.buildercguiqwt.cross_sectionguiqwt.curvegguiqwthguiqwt.histogramiguiqwt.imageguiqwt.iolguiqwt.label
-
indexmodules |guiqwtv2.2.1documentation »
pguiqwt.panelsguiqwt.plotguiqwt.pyplotsguiqwt.shapesguiqwt.signalsguiqwt.stylestguiqwt.toolswguiqwt.widgetsguiqwt.widgets.fitguiqwt.widgets.resizedialogguiqwt.widgets.rotatecrop
©Copyright2009-2012,CEA-Commissariatàl'EnergieAtomiqueetauxEnergiesAlternatives.
CreatedusingSphinx1.0.8.
http://sphinx.pocoo.org/
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
-
Overview
BasedonPyQwt(plottingwidgetsforPyQt4graphicaluserinterfaces)andonthescientificmodulesNumPyandSciPy,guiqwtisaPythonlibraryprovidingefficient2Ddata-plottingfeatures(curve/imagevisualizationandrelatedtools)forinteractivecomputingandsignal/imageprocessingapplicationdevelopment.
-
PerformancesThemostpopularPythonmodulefordataplottingiscurrentlymatplotlib,anopen-sourcelibraryprovidingalotofplottypesandanAPI(thepylabinterface)whichisveryclosetoMATLAB’splottinginterface.
guiqwtplottingfeaturesarequitelimitedintermsofplottypescomparedtomatplotlib.Howeverthecurrentlyimplementedplottypesaremuchmoreefficient.Forexample,theguiqwtimageshowingfunction(guiqwt.pyplot.imshow())donotmakeanycopyofthedisplayeddata,henceallowingtoshowimageswhicharemuchlargerthanwithitsmatplotlib‘scounterpart.Inotherterms,whenshowinga30-MBimage(16-bitsunsignedintegersforexample)withguiqwt,noadditionalmemoryiswastedtodisplaytheimage(exceptfortheoffscreenimageofcoursewhichdependsonthewindowsize)whereasmatplotlibtakesmorethan600-MBofadditionalmemory(theoriginalarrayisduplicatedfourtimesusing64-bitsfloatdatatypes).
-
FeaturesTheguiqwtlibraryalsoprovidesthefollowingfeatures:
guiqwt.pyplot:equivalenttomatplotlib.pyplot,atleastfortheimplementedfunctions
supportedplotitems:
guiqwt.curve:curvesanderrorbarcurvesguiqwt.histogram:1Dhistogramsguiqwt.image:images(RGBimagesarenotsupported),imageswithnon-linearx/yscales,imageswithspecifiedpixelsize(e.g.loadedfromDICOMfiles),2Dhistograms,pseudo-colorimages(pcolor)guiqwt.label:labels,curveplotlegendsguiqwt.shapes:polygon,polylines,rectangle,circle,ellipseandsegmentguiqwt.annotations:annotatedshapes(shapeswithlabelsshowingpositionanddimensions):rectanglewithcenterpositionandsize,circlewithcenterpositionanddiameter,ellipsewithcenterpositionanddiameters(theseitemsareveryusefultomeasurethingsdirectlyondisplayedimages)
curves,imagesandshapes:
multipleobjectselectionformovingobjectsor
-
editingtheirpropertiesthroughautomaticallygenerateddialogboxes(guidata)itemlistpanel:moveobjectsfromforegroundtobackground,show/hideobjects,removeobjects,...customizableaspectratioalotofready-to-usetools:plotcanvasexporttoimagefile,imagesnapshot,imagerectangularfilter,etc.
curves:
intervalselectiontoolswithlabelsshowingresultsofcomputingonselectedareacurvefittingtoolwithautomaticfit,manualfitwithsliders,...
images:
contrastadjustmentpanel:selecttheLUTbymovingarangeselectionobjectontheimagelevelshistogram,eliminateoutliers,...X-axisandY-axiscross-sections:supportformultipleimages,averagecross-sectiontoolonarectangulararea,...applyanyaffinetransformtodisplayedimagesinreal-time(rotation,magnification,translation,horizontal/verticalflip,...)
applicationdevelopmenthelpers:
ready-to-usecurveandimageplotwidgetsand
-
dialogboxes(seeguiqwt.plot)load/savegraphicalobjects(curves,images,shapes)alotoftestscriptswhichdemonstrateguiqwtfeatures(seeexamples)
-
HowitworksAguiqwt-basedplottingwidgetmaybeconstructedusingoneofthefollowingmethods:
Interactivemode:whenmanipulatingandvisualizingdatainaninteractivePythonorIPythoninterpreter,the:py:mod`guiqwt.pyplot`moduleprovidetheeasiestwaytoplotcurves,showimagesandmore.SyntaxissimilartoMATLAB’s,thusveryeasytolearnandtouseinteractively.Scriptmode:whenmanipulatingandvisualizingdatausingascript,the:py:mod`guiqwt.pyplot`moduleisstillagoodchoiceaslongasyoudon’tneedtocustomizethefiguregraphicaluserinterface(GUI)layout.However,ifyouwanttoaddotherwidgetstotheGUI,likemenus,buttonsandsoon,youshouldratheruseplottingwidgetclassesinsteadofthepyplothelperfunctions.
Therearetwokindsofplottingwidgetsdefinedinguiqwt:
low-levelplottingwidgets:guiqwt.curve.CurvePlotandguiqwt.image.ImagePlothigh-levelplottingwidgets(ready-to-usewidgetswithintegratedtoolsandpanels):guiqwt.plot.CurveWidgetandguiqwt.plot.ImageWidget,andcorrespondingdialogboxesguiqwt.plot.CurveDialogandguiqwt.plot.ImageDialog
-
Curve-relatedwidgetswithintegratedplotmanager:
Image-relatedwidgetswithintegratedplotmanager:
Seealso
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
Moduleguiqwt.curve
Moduleprovidingcurve-relatedplotitemsandplottingwidgets
Moduleguiqwt.image
Moduleprovidingimage-relatedplotitemsandplottingwidgets
Moduleguiqwt.plot
Moduleprovidingready-to-usecurveandimageplottingwidgetsanddialogboxes
©Copyright2009-2012,CEA-Commissariatàl'EnergieAtomiqueetauxEnergiesAlternatives.
CreatedusingSphinx1.0.8.
http://sphinx.pocoo.org/
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
-
Installation
-
Dependencies
Requirements:
Python2.x(x>=5)PyQt44.x(x>=3;recommendedx>=4)PyQwt5.x(x>=2)guidata1.3.2orlaterNumPy1.x(x>=3)–NumPy1.6orlaterisrequiredforWindowsbinariesSciPy0.x(x>=7)PIL1.1.x(x>=6)
OptionalPythonmodules:
spyderlib2.1forSiftembeddedPythonconsolepydicom0.9.x(x>=4)forDICOMfilesI/Ofeatures
-
InstallationAllplatforms:
Thesetup.pyscriptsupportsthefollowingextraoptionsforoptimizingtheimagescalerenginewithSSE2/SSE3processors:--sse2and--sse3
OnGNU/LinuxandMacOSplatforms:pythonsetup.pybuildinstall
IfgfortranisnotyourdefaultFortrancompiler:
pythonsetup.pybuild--fcompiler=gfortraninstall
orifitfails,youmaytrythefollowing:pythonsetup.pybuild_ext--fcompiler=gnu95buildinstall
OnWindowsplatforms(requiresMinGWwithgfortran):pythonsetup.pybuild-cmingw32install
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
Helpandsupport
Externalresources:
Bugreportsandfeaturerequests:GoogleCodeHelp,supportanddiscussionsaroundtheproject:GoogleGroup
©Copyright2009-2012,CEA-Commissariatàl'EnergieAtomiqueetauxEnergiesAlternatives.
CreatedusingSphinx1.0.8.
http://guiqwt.googlecode.comhttp://groups.google.fr/group/guidata_guiqwthttp://sphinx.pocoo.org/
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
-
Howtocontribute
-
SubmittingchangesDuetoconfidentialityissues,wearenotablefornowtopublishanysource-controlledrepository(evenifwedohaveaMercurialrepositoryfortheproject).However,thisdoesnotpreventmotivatedusersfromcontributingtotheprojectbysendingpatchesappliedtothelastpublishedversionofthelibrary.Tocompensatetheabsenceofsourcerepository,wetrytoupdatethelibraryasoftenaswecaninordertokeepthepublicsourcearchiveversionascloseaspossibletotheinternaldevelopmentversion.
-
CodingguidelinesIngeneral,wetrytofollowthestandardPythoncodingguidelines,whichcoveralltheimportantcodingaspects(docstrings,comments,namingconventions,importstatements,...)asdescribedhere:
StyleGuideforPythonCode
Theeasiestwaytocheckthatyourcodeisfollowingthoseguidelinesistorunpylint(anotegreaterthan8/10seemstobeareasonnablegoal).
http://www.python.org/peps/pep-0008.html
-
PyQtv4.4compatibilityissuesTheprojecthastobecompatiblewithPyQt>=v4.4whichmeansthatthefollowingrecommendationsshouldbefollowed:
avoidusingsuper:whenwritingclassesderivingfromaQObjectchildclass(i.e.almostanysingleclassimportedfromQtGuiorQtCore),thesuperbuiltin-functionshouldnotbeusedoutsidetheconstructormethod(calltheparentclassmethoddirectlyinstead)beforeusinganyfunctionormethodfromPyQt4,pleasecheckthatthefeatureyouareabouttousewasalreadyimplementedinPyQt4v4.4(morepreciselyintheQtversionusedinPyQt4v4.4)–ifnot,aworkaroundshouldbeimplementedtoavoidbreakingcompatibilitydonotusethePyQt-specificQFileDialogstaticmethods(notpresentinQt)whichwereintroducedinPyQtv4.6:getOpenFileNameAndFilter,getOpenFileNamesAndFilterandgetSaveFileNameAndFilter(guidataprovideswrappersaroundQFileDialogstaticmethodshandlingtheselectedfilterwhichweretakenfromthespyderliblibrary(frommodulespyderlib.qt.compat):theyareavailableinguidata.qt.compat)
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
PyQt/PySidecompatibilityInthenearfuture,theprojectwillbeofficiallycompatiblewithbothPyQtandPySide.
Initscurrentimplementation,ithastobecompatiblewithPyQtAPI#1(oldPyQtversions)andAPI#2(PySide-compatibleAPI,PyQt>=v4.6),whichmeansthatthefollowingrecommendationsshouldbefollowed:
QVariantobjectsmustnotbeused(API#2compatibility)QStringandQStringListobjectsmustnotbeused(API#2compatibility)Whenconnectingbuilt-inC++signalswhichwereoriginallymadetopassstrings(orstringlists),theargumentsshouldalwaysbeassumedtobeQString(orQStringList)objects(API#1compatibility)andsobeconvertedsystematicallytothePythonequivalentobject,i.e.unicode(orlist).
©Copyright2009-2012,CEA-Commissariatàl'EnergieAtomiqueetauxEnergiesAlternatives.
CreatedusingSphinx1.0.8.
http://sphinx.pocoo.org/
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
-
Examples
-
ThetestlauncherAlotofexamplesareavailableintheguiqwttestmodule
fromguiqwtimportteststests.run()
Thetwolinesaboveexecutetheguiqwttestlauncher:
-
Curveplotting
Basiccurveplotting
fromguidata.qt.QtGuiimportQFont
fromguiqwt.plotimportCurveDialogfromguiqwt.builderimportmake
defplot(*items):win=CurveDialog(edit=False,toolbar=True,wintitleoptions=dict(title="Title",xlabelylabel="ylabel"))plot=win.get_plot()foriteminitems:plot.add_item(item)plot.set_axis_font("left",QFont("Courier"))win.get_itemlist_panel().show()plot.set_items_readonly(False)win.show()win.exec_()
deftest():"""Test"""#--CreateQApplicationimportguidata_app=guidata.qapplication()#--fromnumpyimportlinspace,sinx=linspace(-10,10,200)dy=x/100.y=sin(sin(sin(x)))x2=linspace(-10,10,20)y2=sin(sin(sin(x2)))plot(make.curve(x,y,color="b"),
-
make.curve(x2,y2,color="g",curvestyle="Sticks"make.curve(x,sin(2*y),color="r"),make.merror(x,y/2,dy),make.label("Relativepositionoutside"(x[0],y[0]),(-10,-10),"BR"),make.label("Relativepositioninside"(x[0],y[0]),(10,10),"TL"),make.label("Absoluteposition","R",(0,0),make.legend("TR"),make.marker(position=(5.,.8),label_cb=lambdamarkerstyle="|",movable=False)
if__name__=="__main__":test()
Computationsoncurves
fromguiqwt.plotimportCurveDialogfromguiqwt.builderimportmake
-
defplot(*items):win=CurveDialog(edit=False,toolbar=True)plot=win.get_plot()foriteminitems:plot.add_item(item)win.show()win.exec_()
deftest():"""Test"""#--CreateQApplicationimportguidata_app=guidata.qapplication()#--fromnumpyimportlinspace,sin,trapzx=linspace(-10,10,1000)y=sin(sin(sin(x)))
curve=make.curve(x,y,"ab","b")range=make.range(-2,2)disp0=make.range_info_label(range,'BR',u"x=title="Rangeinfos"
disp1=make.computation(range,"BL","trapz=%gcurve,lambdax,y:trapz
disp2=make.computations(range,"TL",[(curve,"min=%.5f",lambda(curve,"max=%.5f",lambda(curve,"avg=%.5f",lambdalegend=make.legend("TR")plot(curve,range,disp0,disp1,disp2,legend
if__name__=="__main__":test()
-
Curvefitting
importnumpyasnp
fromguiqwt.widgets.fitimportFitParam,guifit
deftest():x=np.linspace(-10,10,1000)y=np.cos(1.5*x)+np.random.rand(x.shape[0])*.2deffit(x,params):a,b=paramsreturnnp.cos(b*x)+aa=FitParam("Offset",1.,0.,2.)b=FitParam("Frequency",2.,1.,10.,logscaleparams=[a,b]values=guifit(x,y,fit,params,xlabel="Time(s)"printvaluesprint[param.valueforparaminparams]
if__name__=="__main__":test()
-
Imagevisualization
Imagecontrastadjustment
importos.pathasosp
fromguiqwt.plotimportImageDialogfromguiqwt.builderimportmake
deftest():"""Test"""#--CreateQApplicationimportguidata_app=guidata.qapplication()#--filename=osp.join(osp.dirname(__file__),"brain.png"image=make.image(filename=filename,title="Original"win=ImageDialog(edit=False,toolbar=True,wintitleoptions=dict(show_contrast=Trueplot=win.get_plot()plot.add_item(image)win.resize(600,600)win.show()try:plot.save_widget('contrast.png')exceptIOError:#Skippingthispartofthetest#becauseuserhasnowritepermissiononcurrentdirectorypasswin.exec_()
if__name__=="__main__":test()
-
Imagecross-sections
importos.pathasosp,numpyasnp
fromguiqwt.plotimportImageDialogfromguiqwt.builderimportmake
defcreate_window():win=ImageDialog(edit=False,toolbar=True,wintitleoptions=dict(show_xsection=Truewin.resize(600,600)returnwin
deftest():"""Test"""#--CreateQApplicationimportguidata
-
_app=guidata.qapplication()#--filename=osp.join(osp.dirname(__file__),"brain.png"win=create_window()image=make.image(filename=filename,colormap=data2=np.array(image.data.T[200:],copy=True)image2=make.image(data2,title="Modified",alpha_maskplot=win.get_plot()plot.add_item(image)plot.add_item(image2,z=1)win.exec_()
if__name__=="__main__":test()
-
TransformableimagesAffinetransformsexampleon3000x3000images(real-timetransforms):
fromguidata.qt.QtCoreimportQRectFfromguidata.qt.QtGuiimportQImage
importnumpyasnp
-
fromguiqwt.imageimportassemble_imageitemsfromguiqwt.plotimportImageDialogfromguiqwt.builderimportmakefromguiqwtimportio
DEFAULT_CHARS="".join([chr(c)forcinrange(32,256
defget_font_array(sz,chars=DEFAULT_CHARS):fromguidata.qt.QtGuiimportQFont,QPainter,QColorfont=QFont()font.setFixedPitch(True)font.setPixelSize(sz)font.setStyleStrategy(QFont.NoAntialias)dummy=QImage(10,10,QImage.Format_ARGB32)pnt=QPainter(dummy)pnt.setFont(font)metric=pnt.fontMetrics()rct=metric.boundingRect(chars)pnt.end()h=rct.height()w=rct.width()img=QImage(w,h,QImage.Format_ARGB32)paint=QPainter()paint.begin(img)paint.setFont(font)paint.setBrush(QColor(255,255,255))paint.setPen(QColor(255,255,255))paint.drawRect(0,0,w+1,h+1)paint.setPen(QColor(0,0,0))paint.setBrush(QColor(0,0,0))paint.drawText(0,paint.fontMetrics().ascent(),paint.end()data=img.bits().asstring(img.numBytes())npy=np.frombuffer(data,np.uint8)npy.shape=img.height(),img.bytesPerLine()/4,returnnpy[:,:,0]
-
deftxtwrite(data,x,y,sz,txt,range=None):arr=get_font_array(sz,txt)ifrangeisNone:m,M=data.min(),data.max()else:m,M=rangez=(float(M)-float(m))*np.array(arr,float)/255.arr=np.array(z,data.dtype)dy,dx=arr.shapedata[y:y+dy,x:x+dx]=arr
defimshow(items,title=""):gridparam=make.gridparam(background="black",major_style=(".","gray"win=ImageDialog(edit=False,toolbar=True,wintitleoptions=dict(gridparam=gridparamnc=int(np.sqrt(len(items))+1.0)maxy=0y=0x=0w=Noneplot=win.get_plot()print"-"*80fori,iteminenumerate(items):h=item.boundingRect().height()ifi%nc==0:x=0y+=maxymaxy=helse:x+=wmaxy=max(maxy,h)w=item.boundingRect().width()
item.set_transform(x,y,0.0)
-
print"Addingitem#%d..."%i,plot.add_item(item)print"Done"win.show()win.exec_()
defcompute_image(NX,NY):BX,BY=40,40img=np.random.normal(0,100,size=(BX,BY))timg=np.fft.fftshift(np.fft.fft2(img))printtimg.shapecx=NX/2cy=NY/2bx2=BX/2by2=BY/2z=np.zeros((NX,NY),np.complex64)z[cx-bx2:cx-bx2+BX,cy-by2:cy-by2+BY]=timgz=np.fft.ifftshift(z)rev=np.fft.ifft2(z)returnnp.abs(rev)
defget_bbox(items):r=QRectF()foritinitems:r=r.united(it.boundingRect())returnr
defsave_image(name,data):io.imwrite(name+".u16.tif",data,dtype=np.uint16io.imwrite(name+".u8.png",data,dtype=np.uint8
defbuild_image(items):r=get_bbox(items)x,y,w,h=r.getRect()print"Assembletest1:",w,"x",hdest=assemble_imageitems(items,r,w,h,alignprint"saving..."
-
save_image("test1.png",dest)print"Assembletest2:",w/4,"x",h/4dest=assemble_imageitems(items,r,w/4,h/4,save_image("test2.png",dest)
deftest():"""Test"""N=500data=compute_image(N,N)m=data.min()M=data.max()items=[make.trimage(data,alpha_mask=True,colormapfortypein(np.uint8,np.uint16,np.int8,np.int16info=np.iinfo(type().dtype)s=float((info.max-info.min))a1=s*(data-m)/(M-m)img=np.array(a1+info.min,type)txtwrite(img,0,0,N/15.,str(type))items.append(make.trimage(img,colormap="jet"imshow(items,title=u"Transformtest(%dx%dimages)"returnitems
if__name__=="__main__":#--CreateQApplicationimportguidata_app=guidata.qapplication()#--items=test()build_image(items)
-
Imagerectangularfilter
fromscipy.ndimageimportgaussian_filter
fromguiqwt.plotimportImageDialogfromguiqwt.builderimportmake
defimshow(x,y,data,filter_area,yreverse=True):win=ImageDialog(edit=False,toolbar=True,wintitleoptions=dict(xlabel="x(cm)",yreverse=yreverseimage=make.xyimage(x,y,data)plot=win.get_plot()plot.add_item(image)xmin,xmax,ymin,ymax=filter_areaflt=make.imagefilter(xmin,xmax,ymin,ymax,filter=lambdax,y,data
-
plot.add_item(flt,z=1)plot.replot()win.show()win.exec_()
deftest():"""Test"""#--CreateQApplicationimportguidata_app=guidata.qapplication()#--fromguiqwt.tests.imagexyimportcompute_imagex,y,data=compute_image()imshow(x,y,data,filter_area=(-3.,-1.,0.,2.#--importos.pathasosp,numpyasnpfromguiqwtimportiofilename=osp.join(osp.dirname(__file__),"brain.png"data=io.imread(filename,to_grayscale=True)x=np.linspace(0,30.,data.shape[1])y=np.linspace(0,30.,data.shape[0])imshow(x,y,data,filter_area=(10,20,5,15))
if__name__=="__main__":test()
-
Histograms
2-Dhistogram
fromnumpyimportrandom,array,dot,concatenate
fromguiqwt.plotimportImageDialogfromguiqwt.builderimportmakefromguiqwt.configimport_
defhist2d(X,Y):win=ImageDialog(edit=True,toolbar=True,wintitle="2-DHistogramX0=(0,1),X1=(-1,-1)"hist2d=make.histogram2D(X,Y,200,200)curve=make.curve(X[::50],Y[::50],linestyle='',marker='+',titleplot=win.get_plot()plot.set_aspect_ratio(lock=False)plot.set_antialiasing(False)plot.add_item(hist2d)plot.add_item(curve)plot.set_item_visible(curve,False)win.show()win.exec_()
if__name__=="__main__":importguidata_app=guidata.qapplication()N=150000m=array([[1.,.2],[-.2,3.]])X1=random.normal(0,.3,size=(N,2))X2=random.normal(0,.3,size=(N,2))X=concatenate((X1+[0,1.],dot(X2,m)+[-1,-1.hist2d(X[:,0],X[:,1])
-
Otherexamples
Imageplottools
importos.pathasosp
fromguiqwt.plotimportImageDialogfromguiqwt.toolsimport(RectangleTool,EllipseToolMultiLineTool,FreeFormToolAnnotatedRectangleTool,AnnotatedEllipseToolAnnotatedSegmentTool,AnnotatedCircleToolAnnotatedPointTool,VCursorTool,HCursorTool,ObliqueRectangleTool,AnnotatedObliqueRectangleToolfromguiqwt.builderimportmake
defcreate_window():win=ImageDialog(edit=False,toolbar=True,wintitle="Allimageandplottoolstest"fortoolklassin(LabelTool,HRangeTool,VCursorTool,HCursorTool,XCursorToolSegmentTool,RectangleTool,ObliqueRectangleToolCircleTool,EllipseTool,MultiLineTool,FreeFormTool,AnnotatedRectangleTool,AnnotatedObliqueRectangleToolAnnotatedCircleTool,AnnotatedEllipseToolAnnotatedSegmentTool,AnnotatedPointToolwin.add_tool(toolklass)returnwin
deftest():"""Test"""#--CreateQApplicationimportguidata_app=guidata.qapplication()
-
#--filename=osp.join(osp.dirname(__file__),"brain.png"win=create_window()image=make.image(filename=filename,colormap=plot=win.get_plot()plot.add_item(image)win.exec_()
if__name__=="__main__":test()
Real-timeMandelbrotplotting
importnumpyasnp
-
fromguidata.qt.QtCoreimportQRectF,QPointF
fromguiqwt.configimport_fromguiqwt.plotimportImageDialogfromguiqwt.imageimportRawImageItemfromguiqwt.toolsimportToggleTool
fromguiqwt._mandelimportmandelmandelbrot=mandel.mandelbrot
classFullScale(ToggleTool):def__init__(self,parent,image):super(FullScale,self).__init__(parent,_(u"MAXresolution"self.image=imageself.minprec=image.IMAXself.maxprec=5*image.IMAXdefactivate_command(self,plot,checked):ifself.image.IMAX==self.minprec:self.image.IMAX=self.maxprecelse:self.image.IMAX=self.minprecself.image.set_lut_range([0,self.image.IMAXplot.replot()defupdate_status(self,plot):self.action.setChecked(self.image.IMAX==self
classMandelItem(RawImageItem):def__init__(self,xmin,xmax,ymin,ymax):super(MandelItem,self).__init__(np.zeros((self.bounds=QRectF(QPointF(xmin,ymin),QPointF(xmax,ymax))self.update_border()self.IMAX=80self.set_lut_range([0,self.IMAX])
-
#----QwtPlotItemAPI------------------------------------------------------defdraw_image(self,painter,canvasRect,srcRectx1,y1=canvasRect.left(),canvasRect.top()x2,y2=canvasRect.right(),canvasRect.bottomi1,j1,i2,j2=srcRect
NX=x2-x1NY=y2-y1ifself.data.shape!=(NX,NY):self.data=np.zeros((NX,NY),np.int16orig=complex(i1,j1)dx=(i2-i1)/(NX-1)dy=1j*(j2-j1)/(NY-1)NMAX=self.IMAXmandelbrot(orig,dx,dy,self.data,NMAX)self.data=self.data.TsrcRect=(0,0,NX,NY)x1,y1,x2,y2=canvasRect.getCoords()RawImageItem.draw_image(self,painter,canvasRectsrcRect,(x1,y1,x2
defmandel():win=ImageDialog(edit=True,toolbar=True,wintitleoptions=dict(yreverse=False))mandel=MandelItem(-1.5,.5,-1.,1.)win.add_tool(FullScale,mandel)plot=win.get_plot()plot.set_aspect_ratio(lock=False)plot.add_item(mandel)plot.set_full_scale(mandel)win.show()win.exec_()
if__name__=="__main__":
-
importguidata_app=guidata.qapplication()mandel()
Simpleapplication
fromguidata.qt.QtGuiimportQMainWindow,QMessageBoxfromguidata.qt.QtCoreimport(QSize,QT_VERSION_STRSIGNAL)fromguidata.qt.compatimportgetopenfilename
importsys,platformimportnumpyasnp
-
fromguidata.dataset.datatypesimportDataSet,GetAttrPropfromguidata.dataset.dataitemsimport(IntItem,FloatArrayItemChoiceItem)fromguidata.dataset.qtwidgetsimportDataSetEditGroupBoxfromguidata.configtoolsimportget_iconfromguidata.qthelpersimportcreate_action,add_actionsfromguidata.utilsimportupdate_dataset
fromguiqwt.configimport_fromguiqwt.plotimportImageWidgetfromguiqwt.builderimportmakefromguiqwt.signalsimportSIG_LUT_CHANGEDfromguiqwtimportio
APP_NAME=_("Applicationexample")VERSION='1.0.0'
classImageParam(DataSet):_hide_data=False_hide_size=Truetitle=StringItem(_("Title"),default=_("Untitled"data=FloatArrayItem(_("Data")).set_prop("display"hide=GetAttrPropwidth=IntItem(_("Width"),help=_("Imagewidth(pixels)"default=100).set_prop("display"hide=GetAttrPropheight=IntItem(_("Height"),help=_("Imageheight(pixels)"default=100).set_prop("display"hide=GetAttrProp
classImageParamNew(ImageParam):_hide_data=True_hide_size=Falsetype=ChoiceItem(_("Type"),(("rand",_("random")),("zeros"
classImageListWithProperties(QSplitter):
-
def__init__(self,parent):QSplitter.__init__(self,parent)self.imagelist=QListWidget(self)self.addWidget(self.imagelist)self.properties=DataSetEditGroupBox(_("Properties"self.properties.setEnabled(False)self.addWidget(self.properties)
classCentralWidget(QSplitter):def__init__(self,parent,toolbar):QSplitter.__init__(self,parent)self.setContentsMargins(10,10,10,10)self.setOrientation(Qt.Vertical)imagelistwithproperties=ImageListWithPropertiesself.addWidget(imagelistwithproperties)self.imagelist=imagelistwithproperties.imagelistself.connect(self.imagelist,SIGNAL("currentRowChanged(int)"self.current_item_changed)self.connect(self.imagelist,SIGNAL("itemSelectionChanged()"self.selection_changed)self.properties=imagelistwithproperties.propertiesself.connect(self.properties,SIGNAL("apply_button_clicked()"self.properties_changed)self.imagewidget=ImageWidget(self)self.connect(self.imagewidget.plot,SIG_LUT_CHANGEDself.lut_range_changed)self.item=None#imageitemself.imagewidget.add_toolbar(toolbar,"default"self.imagewidget.register_all_image_tools()self.addWidget(self.imagewidget)
self.images=[]#ListofImageParaminstancesself.lut_ranges=[]#ListofLUTranges
-
self.setStretchFactor(0,0)self.setStretchFactor(1,1)self.setHandleWidth(10)self.setSizes([1,2])defrefresh_list(self):self.imagelist.clear()self.imagelist.addItems([image.titleforimagedefselection_changed(self):"""Imagelist:selectionchanged"""row=self.imagelist.currentRow()self.properties.setDisabled(row==-1)defcurrent_item_changed(self,row):"""Imagelist:currentimagechanged"""image,lut_range=self.images[row],self.lut_rangesself.show_data(image.data,lut_range)update_dataset(self.properties.dataset,imageself.properties.get()deflut_range_changed(self):row=self.imagelist.currentRow()self.lut_ranges[row]=self.item.get_lut_rangedefshow_data(self,data,lut_range=None):plot=self.imagewidget.plotifself.itemisnotNone:self.item.set_data(data)iflut_rangeisNone:lut_range=self.item.get_lut_rangeself.imagewidget.set_contrast_range(*lut_rangeself.imagewidget.update_cross_sections()else:self.item=make.image(data)plot.add_item(self.item,z=0)
-
plot.replot()defproperties_changed(self):"""Theproperties'Apply'buttonwasclicked:updatingimage"""row=self.imagelist.currentRow()image=self.images[row]update_dataset(image,self.properties.datasetself.refresh_list()self.show_data(image.data)defadd_image(self,image):self.images.append(image)self.lut_ranges.append(None)self.refresh_list()self.imagelist.setCurrentRow(len(self.imagesplot=self.imagewidget.plotplot.do_autoscale()defadd_image_from_file(self,filename):image=ImageParam()image.title=unicode(filename)image.data=io.imread(filename,to_grayscaleimage.height,image.width=image.data.shapeself.add_image(image)
classMainWindow(QMainWindow):def__init__(self):QMainWindow.__init__(self)self.setup()defsetup(self):"""Setupwindowparameters"""self.setWindowIcon(get_icon('python.png'))self.setWindowTitle(APP_NAME)self.resize(QSize(600,800))#Welcomemessageinstatusbar:
-
status=self.statusBar()status.showMessage(_("Welcometoguiqwtapplicationexample!"#Filemenufile_menu=self.menuBar().addMenu(_("File"new_action=create_action(self,_("New..."shortcut="Ctrl+N"icon=get_icon('filenew.png'tip=_("Createanewimage"triggered=self.new_imageopen_action=create_action(self,_("Open..."shortcut="Ctrl+O"icon=get_icon('fileopen.png'tip=_("Openanimage"triggered=self.open_imagequit_action=create_action(self,_("Quit"),shortcut="Ctrl+Q"icon=get_std_icontip=_("Quitapplication"triggered=self.closeadd_actions(file_menu,(new_action,open_action#Helpmenuhelp_menu=self.menuBar().addMenu("?")about_action=create_action(self,_("About..."icon=get_std_icontriggered=self.add_actions(help_menu,(about_action,))main_toolbar=self.addToolBar("Main")add_actions(main_toolbar,(new_action,open_action#Setcentralwidget:toolbar=self.addToolBar("Image")self.mainwidget=CentralWidget(self,toolbarself.setCentralWidget(self.mainwidget)
-
#------?defabout(self):QMessageBox.about(self,_("About")+APP_NAME"""%sv%s
%sPierreRaybaut
Copyright©2009-2010CEAPython%s,Qt%s,PyQt%s%s%s"""(APP_NAME,VERSION,_("Developpedby"QT_VERSION_STR,PYQT_VERSION_STR,_(#------I/Odefnew_image(self):"""Createanewimage"""imagenew=ImageParamNew(title=_("Createanewimage"ifnotimagenew.edit(self):returnimage=ImageParam()image.title=imagenew.titleifimagenew.type=='zeros':image.data=np.zeros((imagenew.width,elifimagenew.type=='rand':image.data=np.random.randn(imagenew.widthself.mainwidget.add_image(image)defopen_image(self):"""Openimagefile"""saved_in,saved_out,saved_err=sys.stdin,sys.stdout=Nonefilename,_filter=getopenfilename(self,_io.iohandlersys.stdin,sys.stdout,sys.stderr=saved_iniffilename:self.mainwidget.add_image_from_file(filenameif__name__=='__main__':fromguidataimportqapplicationapp=qapplication()window=MainWindow()
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
window.show()app.exec_()
©Copyright2009-2012,CEA-Commissariatàl'EnergieAtomiqueetauxEnergiesAlternatives.
CreatedusingSphinx1.0.8.
http://sphinx.pocoo.org/
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
-
Sift,theSignalandImageFilteringTool
Siftisasimplesignalandimageprocessingapplicationbasedonguiqwtandguidata.
NotethatSiftincludesanembeddedPythonconsoletomanipulatedirectlythesignalandimageobjects(seescreenshotbelow)–thisfeaturerequiresspyderlib(successfullytestedwithSpyderv2.0.10andv2.1.0dev).
-
Evenifitcouldbeextendedwithpowerfulfeatureslikeitsclosed-sourcecounterpart,Siftisquitelimitedinitscurrentimplementation.Fornow,itsmainpurposeistoshowhowtocreateeasilyandrapidlyyourownsignal/imageprocessingapplicationusingguidataandguiqwt.
-
fromguidata.qt.QtGuiimport(QMainWindow,QMessageBoxQVBoxLayout,QHBoxLayoutQMenu,QApplication,QCursorfromguidata.qt.QtCoreimportQt,QT_VERSION_STR,PYQT_VERSION_STRfromguidata.qt.compatimportgetopenfilenames,getsavefilename
importsys,platform,os.pathasosp,osimportnumpyasnp
fromguidata.dataset.datatypesimportDataSet,ValuePropfromguidata.dataset.dataitemsimport(IntItem,FloatArrayItemChoiceItem,FloatItemBoolItem)fromguidata.dataset.qtwidgetsimportDataSetEditGroupBoxfromguidata.configtoolsimportget_iconfromguidata.qthelpersimportcreate_action,add_actionsfromguidata.qtwidgetsimportDockableWidget,DockableWidgetMixin
-
fromguidata.utilsimportupdate_dataset
fromguiqwt.configimport_fromguiqwt.plotimportCurveWidget,ImageWidgetfromguiqwt.builderimportmake
APP_NAME=_("Sift")APP_DESC=_("""SignalandImageFilteringTool
Simplesignalandimageprocessingapplicationbasedonguiqwtandguidata"""VERSION='0.2.6'defnormalize(yin,parameter='maximum'):"""Normalizeinputarray*yin*withrespecttoparameter*parameter*Supportvaluesfor*parameter*:'maximum'(default),'amplitude','sum','energy'"""axis=len(yin.shape)-1ifparameter=='maximum':maximum=np.max(yin,axis)ifaxis==1:maximum=maximum.reshape((len(maximum),maxarray=np.tile(maximum,yin.shape[axis])returnyin/maxarrayelifparameter=='amplitude':ytemp=np.array(yin,copy=True)minimum=np.min(yin,axis)ifaxis==1:minimum=minimum.reshape((len(minimum),ytemp-=minimumreturnnormalize(ytemp,parameter='maximum'elifparameter=='sum':returnyin/yin.sum()elifparameter=='energy':returnyin/(yin*yin.conjugate()).sum()
-
else:raiseRuntimeError("Unsupportedparameter%s
defxy_fft(x,y):"""ComputeFFTonX,Ydata"""y1=np.fft.fft(y)x1=np.fft.fftshift(np.fft.fftfreq(x.shape[-1],returnx1,y1defxy_ifft(x,y):"""ComputeiFFTonX,Ydata"""y1=np.fft.ifft(y)x1=np.fft.fftshift(np.fft.fftfreq(x.shape[-1],returnx1,y1defflatfield(rawdata,flatdata):"""Computeflat-fieldcorrection"""dtemp=np.array(rawdata,dtype=np.float64,copydunif=np.array(flatdata,dtype=np.float64,copydunif[dunif==0]=1.returnnp.array(dtemp/dunif,dtype=rawdata.dtype
classSignalParam(DataSet):title=StringItem(_("Title"),default=_("Untitled"xydata=FloatArrayItem(_("Data"),transpose=Truedefcopy_data_from(self,other,dtype=None):self.xydata=np.array(other.xydata,copy=Truedefchange_data_type(self,dtype):self.xydata=np.array(self.xydata,dtype=dtypedefget_data(self):ifself.xydataisnotNone:returnself.xydata[1]defset_data(self,data):self.xydata[1]=datadata=property(get_data,set_data)
-
classSignalParamNew(DataSet):title=StringItem(_("Title"),default=_("Untitled"xmin=FloatItem("Xmin",default=-10.)xmax=FloatItem("Xmax",default=10.)size=IntItem(_("Size"),help=_("Signalsize(totalnumberofpoints)"min=1,default=500)type=ChoiceItem(_("Type"),(("rand",_("random")),("zeros"("gauss",_("gaussian"))))
classImageParam(DataSet):title=StringItem(_("Title"),default=_("Untitled"data=FloatArrayItem(_("Data"))metadata=DictItem(_("Metadata"),default=Nonedefcopy_data_from(self,other,dtype=None):self.data=np.array(other.data,copy=True,defchange_data_type(self,dtype):self.data=np.array(self.data,dtype=dtype
classImageParamNew(DataSet):title=StringItem(_("Title"),default=_("Untitled"height=IntItem(_("Height"),help=_("Imageheight(totalnumberofrows)"min=1,default=500)width=IntItem(_("Width"),help=_("Imagewidth(totalnumberofcolumns)"min=1,default=500)dtype=ChoiceItem(_("Datatype"),((np.uint8,"uint8"),(np.int16(np.float32,"float32"),(np))type=ChoiceItem(_("Type"),(("zeros",_("zeros")),("empty"("rand",_("random")),))
classObjectFT(QSplitter):
-
"""Objecthandlingtheitemlist,theselecteditempropertiesandplot"""PARAMCLASS=NonePREFIX=Nonedef__init__(self,parent,plot):super(ObjectFT,self).__init__(Qt.Vertical,self.plot=plotself.objects=[]#signalsorimagesself.items=[]#associatedplotitemsself.listwidget=Noneself.properties=Noneself._hsplitter=Noneself.file_actions=Noneself.edit_actions=Noneself.operation_actions=Noneself.processing_actions=Noneself.number=0
#Objectselectiondependentactionsself.actlist_1more=[]self.actlist_2more=[]self.actlist_1=[]self.actlist_2=[]#------Setupwidget,menus,actionsdefsetup(self,toolbar):self.listwidget=QListWidget()self.listwidget.setAlternatingRowColors(Trueself.listwidget.setSelectionMode(QListWidgetself.properties=DataSetEditGroupBox(_("Properties"self.properties.setEnabled(False)
self.connect(self.listwidget,SIGNAL("currentRowChanged(int)"self.current_item_changed)self.connect(self.listwidget,SIGNAL("itemSelectionChanged()"self.selection_changed)
-
self.connect(self.properties,SIGNAL("apply_button_clicked()"self.properties_changed)properties_stretched=QWidget()hlayout=QHBoxLayout()hlayout.addWidget(self.properties)#hlayout.addStretch()vlayout=QVBoxLayout()vlayout.addLayout(hlayout)vlayout.addStretch()properties_stretched.setLayout(vlayout)self.addWidget(self.listwidget)self.addWidget(properties_stretched)
#Editactionsduplicate_action=create_action(self,_("Duplicate"icon=get_icontriggered=selfself.actlist_1+=[duplicate_action]remove_action=create_action(self,_("Remove"icon=get_icon(triggered=selfself.actlist_1more+=[remove_action]self.edit_actions=[duplicate_action,remove_action#Operationactionssum_action=create_action(self,_("Sum"),average_action=create_action(self,_("Average"triggered=selfdiff_action=create_action(self,_("Difference"triggered=self.compute_differenceprod_action=create_action(self,_("Product"triggered=self.compute_productdiv_action=create_action(self,_("Division"triggered=self.compute_divisionself.actlist_2more+=[sum_action,average_action
-
self.actlist_2+=[diff_action,div_action]self.operation_actions=[sum_action,average_actiondiff_action,prod_action
#------GUIrefresh/setupdefcurrent_item_changed(self,row):ifrow!=-1:update_dataset(self.properties.dataset,self.properties.get()
def_get_selected_rows(self):return[index.row()forindexinself.listwidget.selectionModel().selectedRowsdefselection_changed(self):"""Signallist:selectionchanged"""row=self.listwidget.currentRow()self.properties.setDisabled(row==-1)self.refresh_plot()nbrows=len(self._get_selected_rows())foractinself.actlist_1more:act.setEnabled(nbrows>=1)foractinself.actlist_2more:act.setEnabled(nbrows>=2)foractinself.actlist_1:act.setEnabled(nbrows==1)foractinself.actlist_2:act.setEnabled(nbrows==2)defmake_item(self,row):raiseNotImplementedErrordefupdate_item(self,row):raiseNotImplementedErrordefrefresh_plot(self):foriteminself.items:
-
ifitemisnotNone:item.hide()forrowinself._get_selected_rows():item=self.items[row]ifitemisNone:item=self.make_item(row)self.plot.add_item(item)else:self.update_item(row)self.plot.set_item_visible(item,Trueself.plot.set_active_item(item)self.plot.do_autoscale()defrefresh_list(self,new_current_row='current'"""new_current_row:integer,'first','last','current'"""row=self.listwidget.currentRow()self.listwidget.clear()self.listwidget.addItems(["%s%03d:%s"%(selffori,objinenumerateifnew_current_row=='first':row=0elifnew_current_row=='last':row=self.listwidget.count()-1elifisinstance(new_current_row,int):row=new_current_rowelse:assertnew_current_row=='current'ifrow<self.listwidget.count():self.listwidget.setCurrentRow(row)defproperties_changed(self):"""Theproperties'Apply'buttonwasclicked:updatingsignal"""row=self.listwidget.currentRow()update_dataset(self.objects[row],self.propertiesself.refresh_list(new_current_row='current'self.listwidget.setCurrentRow(row)self.refresh_plot()
-
defadd_object(self,obj):self.objects.append(obj)self.items.append(None)self.refresh_list(new_current_row='last')self.listwidget.setCurrentRow(len(self.objectsself.emit(SIGNAL('object_added()'))#------Editoperationsdefduplicate_object(self):row=self._get_selected_rows()[0]obj=self.objects[row]objcopy=self.PARAMCLASS()objcopy.title=obj.titleobjcopy.copy_data_from(obj)self.objects.insert(row+1,objcopy)self.items.insert(row+1,None)self.refresh_list(new_current_row=row+1)self.refresh_plot()defremove_object(self):rows=sorted(self._get_selected_rows(),reverseforrowinrows:self.objects.pop(row)item=self.items.pop(row)self.plot.del_item(item)self.refresh_list(new_current_row='first')self.refresh_plot()#------Operationsdefcompute_sum(self):rows=self._get_selected_rows()sumobj=self.PARAMCLASS()sumobj.title="+".join(["%s%03d"%(self.PREFIXtry:forrowinrows:obj=self.objects[row]
-
ifsumobj.dataisNone:sumobj.copy_data_from(obj)else:sumobj.data+=obj.dataexceptException,msg:importtracebacktraceback.print_exc()QMessageBox.critical(self.parent(),APP_NAME_(u"Error:")+"\n%s"returnself.add_object(sumobj)defcompute_average(self):rows=self._get_selected_rows()sumobj=self.PARAMCLASS()title=",".join(["%s%03d"%(self.PREFIX,sumobj.title=_("Average")+("(%s)"%titleoriginal_dtype=self.objects[rows[0]].datatry:forrowinrows:obj=self.objects[row]ifsumobj.dataisNone:sumobj.copy_data_from(obj,dtypeelse:sumobj.data+=obj.dataexceptException,msg:importtracebacktraceback.print_exc()QMessageBox.critical(self.parent(),APP_NAME_(u"Error:")+"\n%s"returnsumobj.data/=float(len(rows))sumobj.change_data_type(dtype=original_dtypeself.add_object(sumobj)defcompute_product(self):rows=self._get_selected_rows()
-
sumobj=self.PARAMCLASS()sumobj.title="*".join(["%s%03d"%(self.PREFIXtry:forrowinrows:obj=self.objects[row]ifsumobj.dataisNone:sumobj.copy_data_from(obj)else:sumobj.data*=obj.dataexceptException,msg:importtracebacktraceback.print_exc()QMessageBox.critical(self.parent(),APP_NAME_(u"Error:")+"\n%s"returnself.add_object(sumobj)defcompute_difference(self):rows=self._get_selected_rows()diffobj=self.PARAMCLASS()diffobj.title="-".join(["%s%03d"%(self.forrowinrows])try:obj0,obj1=self.objects[rows[0]],selfdiffobj.copy_data_from(obj0)diffobj.data=obj0.data-obj1.dataexceptException,msg:importtracebacktraceback.print_exc()QMessageBox.critical(self.parent(),APP_NAME_(u"Error:")+"\n%s"returnself.add_object(diffobj)defcompute_division(self):rows=self._get_selected_rows()diffobj=self.PARAMCLASS()
-
diffobj.title="/".join(["%s%03d"%(self.forrowinrows])try:obj0,obj1=self.objects[rows[0]],selfdiffobj.copy_data_from(obj0)diffobj.data=obj0.data/obj1.dataexceptException,msg:importtracebacktraceback.print_exc()QMessageBox.critical(self.parent(),APP_NAME_(u"Error:")+"\n%s"returnself.add_object(diffobj)#------DataProcessingdefapply_11_func(self,obj,orig,func,param):ifparamisNone:obj.data=func(orig.data)else:obj.data=func(orig.data,param)defcompute_11(self,name,func,param=None,one_param_for_allsuffix=None):ifparamisnotNoneandone_param_for_all:ifnotparam.edit(parent=self.parent()):returnrows=self._get_selected_rows()forrowinrows:ifparamisnotNoneandnotone_param_for_allifnotparam.edit(parent=self.parentreturnorig=self.objects[row]obj=self.PARAMCLASS()obj.title="%s(%s%03d)"%(name,self.ifsuffixisnotNone:obj.title+="|"+suffix(param)obj.copy_data_from(orig)
-
self.emit(SIGNAL("status_message(QString)"_("Computing:")+""+obj.titleQApplication.setOverrideCursor(QCursor(self.repaint()try:self.apply_11_func(obj,orig,func,exceptException,msg:importtracebacktraceback.print_exc()QMessageBox.critical(self.parent(),_(u"Error:")+"\nreturnfinally:self.emit(SIGNAL("status_message(QString)"QApplication.restoreOverrideCursor()self.add_object(obj)classSignalFT(ObjectFT):PARAMCLASS=SignalParamPREFIX="s"#------ObjectFTAPIdefsetup(self,toolbar):ObjectFT.setup(self,toolbar)#Fileactionsnew_action=create_action(self,_("Newsignal..."icon=get_icon('filenew.png'tip=_("Createanewsignal"triggered=self.new_signalopen_action=create_action(self,_("Opensignal..."icon=get_icon('fileopen.png'tip=_("Openasignal"triggered=self.open_signalsave_action=create_action(self,_("Savesignal..."icon=get_icon('filesave.png'tip=_("Saveselectedsignal"triggered=self.save_signal
-
self.actlist_1more+=[save_action]self.file_actions=[new_action,open_action
#Operationactionsroi_action=create_action(self,_("ROIextraction"triggered=self.extract_roiswapaxes_action=create_action(self,_("SwapX/Yaxes"triggered=selfself.actlist_1more+=[roi_action,swapaxes_actionself.operation_actions+=[None,roi_action#Processingactionsnormalize_action=create_action(self,_("Normalize"triggered=selflincal_action=create_action(self,_("Linearcalibration"triggered=selfgaussian_action=create_action(self,_("Gaussianfilter"triggered=selfwiener_action=create_action(self,_("Wienerfilter"triggered=selffft_action=create_action(self,_("FFT"),tip=_("Warning:onlyrealpartisplotted"triggered=self.compute_fftifft_action=create_action(self,_("InverseFFT"tip=_("Warning:onlyrealpartisplotted"triggered=self.compute_ifftself.actlist_1more+=[normalize_action,lincal_actiongaussian_action,wiener_actionfft_action,ifft_actionself.processing_actions=[normalize_actiongaussian_action,fft_action,ifft_actionadd_actions(toolbar,[new_action,open_action
defmake_item(self,row):signal=self.objects[row]
-
data=signal.xydataiflen(data)==2:#x,ysignalx,y=dataitem=make.mcurve(x,y.real,label=signaleliflen(data)==4:#x,y,dx,dyerrorbarsignalx,y,dx,dy=dataitem=make.merror(x,y.real,dx,dy,labelelse:raiseRuntimeError,"datanotsupported"self.items[row]=itemreturnitemdefupdate_item(self,row):signal=self.objects[row]item=self.items[row]data=signal.xydataiflen(data)==2:#x,ysignalx,y=dataitem.set_data(x,y.real)eliflen(data)==4:#x,y,dx,dyerrorbarsignalx,y,dx,dy=dataitem.set_data(x,y.real,dx,dy)item.curveparam.label=signal.title#------Signaloperationsdefextract_roi(self):classROIParam(DataSet):row1=IntItem(_("Firstrowindex"),defaultrow2=IntItem(_("Lastrowindex"),defaultparam=ROIParam(_("ROIextraction"))self.compute_11("ROI",lambdax,y,p:(x.copyy.copyparam,suffix=lambdap:u"rows=%d:%d"defswap_axes(self):self.compute_11("SwapAxes",lambdax,y:(y
-
#------SignalProcessingdefapply_11_func(self,obj,signal,func,paramdata=signal.xydataiflen(data)==2:#x,ysignalx,y=dataifparamisNone:obj.xydata=func(x,y)else:obj.xydata=func(x,y,param)eliflen(data)==4:#x,y,dx,dyerrorbarsignalx,y,dx,dy=dataifparamisNone:x2,y2=func(x,y)_x3,dy2=func(x,dy)else:x2,y2=func(x,y,param)dx2,dy2=func(dx,dy,param)obj.xydata=x2,y2,dx,dy2defnormalize(self):methods=((_("maximum"),'maximum'),(_("amplitude"),'amplitude'),(_("sum"),'sum'),(_("energy"),'energy'))classNormalizeParam(DataSet):method=ChoiceItem(_("Normalizewithrespectto"param=NormalizeParam(_("Normalize"))deffunc(x,y,p):returnx,normalize(y,p.method)self.compute_11("Normalize",func,param,suffix=lambdap:u"ref=%s"defcalibrate(self):axes=(('x',_("X-axis")),('y',_("Y-axis"classCalibrateParam(DataSet):axis=ChoiceItem(_("Calibrate"),axes,
-
a=FloatItem('a',default=1.)b=FloatItem('b',default=0.)param=CalibrateParam(_("Linearcalibration"deffunc(x,y,p):ifp.axis=='x':returnp.a*x+p.b,yelse:returnx,p.a*y+p.bself.compute_11("LinearCal",func,param,suffix=lambdap:u"%s=%s*%sdefcompute_wiener(self):importscipy.signalasspsdeffunc(x,y):returnx,sps.wiener(y)self.compute_11("WienerFilter",func)defcompute_gaussian(self):classGaussianParam(DataSet):sigma=FloatItem(u"σ",default=1.)param=GaussianParam(_("Gaussianfilter"))importscipy.ndimageasspideffunc(x,y,p):returnx,spi.gaussian_filter1d(y,p.sigmaself.compute_11("GaussianFilter",func,paramsuffix=lambdap:u"σ=%.3fpixels"defcompute_fft(self):self.compute_11("FFT",xy_fft)defcompute_ifft(self):self.compute_11("iFFT",xy_ifft)#------I/Odefnew_signal(self):"""Createanewsignal"""
-
signalnew=SignalParamNew(title=_("Createanewsignal"rows=self._get_selected_rows()ifrows:signalnew.size=len(self.objects[rows[signalnew.title="%s%d"%(signalnew.titleifnotsignalnew.edit(parent=self.parent()):returnself.number+=1signal=SignalParam()signal.title=signalnew.titlexarr=np.linspace(signalnew.xmin,signalnewifsignalnew.type=='zeros':signal.xydata=np.vstack((xarr,np.zeroselifsignalnew.type=='rand':signal.xydata=np.vstack((xarr,np.randomelifsignalnew.type=='gauss':classGaussParam(DataSet):a=FloatItem("Norm",default=1.)x0=FloatItem("X0",default=0.0)sigma=FloatItem(u"σ",default=5.)param=GaussParam(_("Newgaussianfunction"ifnotparam.edit(parent=self.parent()):returnygauss=param.a*np.exp(-.5*((xarr-paramsignal.xydata=np.vstack((xarr,ygaussself.add_object(signal)defopen_signal(self):"""Opensignalfile"""saved_in,saved_out,saved_err=sys.stdin,sys.stdout=Nonefilters='%s(*.txt*.csv)\n%s(*.npy)'\%(_(u"Textfiles"),_(u"NumPyarrays"filenames,_filter=getopenfilenames(self.filterssys.stdin,sys.stdout,sys.stderr=saved_infilenames=list(filenames)
-
forfilenameinfilenames:filename=unicode(filename)os.chdir(osp.dirname(filename))signal=SignalParam()signal.title=filenametry:ifosp.splitext(filename)[1]==".npy"xydata=np.load(filename)else:fordelimiterin('\t',',',''try:xydata=np.loadtxt(filenamebreakexceptValueError:continueelse:raiseassertlen(xydata.shape)in(1,2),exceptException,msg:importtracebacktraceback.print_exc()QMessageBox.critical(self.parent(),(_(u"%scouldnotbeopened:")"\n"+str(msg))returniflen(xydata.shape)==1:xydata=np.vstack((np.arange(xydataelse:rows,cols=xydata.shapeforcolnbin(2,3,4):ifcols==colnbandrows>colnbxydata=xydata.Tbreakifcols==3:#x,y,dyxarr,yarr,dyarr=xydatadxarr=np.zeros_like(dyarr)
-
xydata=np.vstack((xarr,yarr,signal.xydata=xydataself.add_object(signal)defsave_signal(self):"""Saveselectedsignal"""rows=self._get_selected_rows()forrowinrows:filename,_filter=getsavefilename(self_(u"CSVfiles"ifnotfilename:returnfilename=unicode(filename)os.chdir(osp.dirname(filename))obj=self.objects[row]try:np.savetxt(filename,obj.xydata,delimiterexceptException,msg:importtracebacktraceback.print_exc()QMessageBox.critical(self.parent(),(_(u"%scouldnotbewritten:""\n"+str(msg))return
classImageFT(ObjectFT):PARAMCLASS=ImageParamPREFIX="i"#------ObjectFTAPIdefsetup(self,toolbar):ObjectFT.setup(self,toolbar)#Fileactionsnew_action=create_action(self,_("Newimage..."icon=get_icon('filenew.png'tip=_("Createanewimage"triggered=self.new_image
-
open_action=create_action(self,_("Openimage..."icon=get_icon('fileopen.png'tip=_("Openanimage"triggered=self.open_imagesave_action=create_action(self,_("Saveimage..."icon=get_icon('filesave.png'tip=_("Saveselectedimage"triggered=self.save_imageself.actlist_1more+=[save_action]self.file_actions=[new_action,open_action
#Operationactionsrotate_menu=QMenu(_("Rotation"),self)hflip_action=create_action(self,_("Fliphorizontally"triggered=self.vflip_action=create_action(self,_("Flipvertically"triggered=self.rot90_action=create_action(self,_("Rotate90°right"triggered=self.rot270_action=create_action(self,_("Rotate90°left"triggered=selfrotate_action=create_action(self,_("Rotatearbitrarily..."triggered=selfresize_action=create_action(self,_("Resize"triggered=selfroi_action=create_action(self,_("ROIextraction"triggered=self.extract_roiswapaxes_action=create_action(self,_("SwapX/Yaxes"triggered=selfflatfield_action=create_action(self,_("Flat-fieldcorrection"triggered=selfself.actlist_1+=[resize_action]self.actlist_2+=[flatfield_action]self.actlist_1more+=[roi_action,swapaxes_actionhflip_action,vflip_actionrot90_action,rot270_actionadd_actions(rotate_menu,[hflip_action,vflip_action
-
rot90_action,rot270_actionself.operation_actions+=[None,rotate_menuresize_action,roi_actionNone,flatfield_action#Processingactionslincal_action=create_action(self,_("Linearcalibration"triggered=selfthreshold_action=create_action(self,_("Thresholding"triggered=selfclip_action=create_action(self,_("Clipping"triggered=self.compute_clipgaussian_action=create_action(self,_("Gaussianfilter"triggered=selfwiener_action=create_action(self,_("Wienerfilter"triggered=selffft_action=create_action(self,_("FFT"),tip=_("Warning:onlyrealpartisplotted"triggered=self.compute_fftifft_action=create_action(self,_("InverseFFT"tip=_("Warning:onlyrealpartisplotted"triggered=self.compute_ifftself.actlist_1more+=[lincal_action,threshold_actiongaussian_action,wiener_actionfft_action,ifft_actionself.processing_actions=[lincal_action,threshold_actionclip_action,Nonegaussian_action,ifft_action]add_actions(toolbar,[new_action,open_actiondefmake_item(self,row):image=self.objects[row]item=make.image(image.data.real,title=imageeliminate_outliers=2.)self.items[row]=item
-
returnitemdefupdate_item(self,row):image=self.objects[row]item=self.items[row]lut_range=[item.min,item.max]item.set_data(image.data.real,lut_range=lut_rangeitem.imageparam.label=image.titleitem.plot().update_colormap_axis(item)#------Imageoperationsdefrotate_arbitrarily(self):boundaries=('constant','nearest','reflect'prop=ValueProp(False)classRotateParam(DataSet):angle=FloatItem(u"%s(°)"%_(u"Angle"mode=ChoiceItem(_(u"Mode"),zip(boundariesdefault=boundaries[0])cval=FloatItem(_("cval"),default=0.,help=_(u"Valueusedforpointsoutsidethe"u"boundariesoftheinputifmodeis"u"'constant'"))reshape=BoolItem(_(u"Reshapetheoutputarray"help=_(u"Reshapetheoutputarray"u"sothattheinputarrayis"u"containedcompletelyintheoutput"prefilter=BoolItem(_(u"Prefiltertheinputimage"default=True).set_proporder=IntItem(_(u"Order"),default=3,help=_("Splineinterpolationorder").set_prop("display",activeparam=RotateParam(_("Rotation"))importscipy.ndimageasspiself.compute_11("Rotate",lambdax,p:spi.rotate(x,p.angle,reshapeorder=p.order,mode
-
cval=p.cval,prefilterparam,suffix=lambdap:u"α=%(pdefrotate_90(self):self.compute_11("Rotate90",lambdax:np.rot90defrotate_270(self):self.compute_11("Rotate270",lambdax:np.rot90defflip_horizontally(self):self.compute_11("HFlip",lambdax:np.fliplrdefflip_vertically(self):self.compute_11("VFlip",lambdax:np.flipuddefresize_image(self):rows=self._get_selected_rows()obj=self.objects[rows[0]]original_size=obj.data.shape[1],obj.datafromguiqwt.widgets.resizedialogimportResizeDialogdlg=ResizeDialog(self.plot,new_size=original_sizeold_size=original_size,text=_("Destinationsize:"ifnotdlg.exec_():returnboundaries=('constant','nearest','reflect'prop=ValueProp(False)classResizeParam(DataSet):zoom=FloatItem(_(u"Zoom"),default=dlgmode=ChoiceItem(_(u"Mode"),zip(boundariesdefault=boundaries[0])cval=FloatItem(_("cval"),default=0.,help=_(u"Valueusedforpointsoutsidethe"u"boundariesoftheinputifmodeis"u"'constant'"))prefilter=BoolItem(_(u"Prefiltertheinputimage"
-
default=True).set_proporder=IntItem(_(u"Order"),default=3,help=_("Splineinterpolationorder").set_prop("display",activeparam=ResizeParam(_("Resize"))importscipy.ndimageasspiself.compute_11("Zoom",lambdax,p:spi.interpolation.zoom(x,pmode=prefilterparam,suffix=lambdap:u"zoom=defextract_roi(self):classROIParam(DataSet):row1=IntItem(_("Firstrowindex"),defaultrow2=IntItem(_("Lastrowindex"),defaultcol1=IntItem(_("Firstcolumnindex"),col2=IntItem(_("Lastcolumnindex"),param=ROIParam(_("ROIextraction"))self.compute_11("ROI",lambdax,p:x.copy()[p.row1:p.row2,p.col1param,suffix=lambdap:u"rows=%(p.row1,p.row2,p.col1,defswap_axes(self):self.compute_11("SwapAxes",lambdaz:z.T)defflat_field_correction(self):rows=self._get_selected_rows()robj=self.PARAMCLASS()robj.title="FlatField("+(','.join(["%s%03dforrowtry:robj.data=flatfield(self.objects[rowsself.objects[rows[exceptException,msg:importtraceback
-
traceback.print_exc()QMessageBox.critical(self.parent(),APP_NAME_(u"Error:")+"\n%s"returnself.add_object(robj)#------ImageProcessingdefcalibrate(self):classCalibrateParam(DataSet):a=FloatItem('a',default=1.)b=FloatItem('b',default=0.)param=CalibrateParam(_("Linearcalibration"self.compute_11("LinearCal",lambdax,p:psuffix=lambdap:u"z=%s*z+%sdefcompute_threshold(self):classThresholdParam(DataSet):value=FloatItem(_(u"Threshold"))self.compute_11("Threshold",lambdax,p:npThresholdParam(_("Thresholding"suffix=lambdap:u"min=%slsb"defcompute_clip(self):classClipParam(DataSet):value=FloatItem(_(u"Clippingvalue"))self.compute_11("Clip",lambdax,p:np.clipClipParam(_("Clipping")),suffix=lambdap:u"max=%slsb"defcompute_wiener(self):importscipy.signalasspsself.compute_11("WienerFilter",sps.wiener)defcompute_gaussian(self):classGaussianParam(DataSet):sigma=FloatItem(u"σ",default=1.)param=GaussianParam(_("Gaussianfilter"))
-
importscipy.ndimageasspiself.compute_11("GaussianFilter",lambdax,p:spi.gaussian_filtersuffix=lambdap:u"σ=%.3fpixels"defcompute_fft(self):self.compute_11("FFT",np.fft.fft2)defcompute_ifft(self):self.compute_11("iFFT",np.fft.ifft2)#------I/Odefnew_image(self):"""Createanewimage"""imagenew=ImageParamNew(title=_("Createanewimage"rows=self._get_selected_rows()ifrows:data=self.objects[rows[-1]].dataimagenew.width=data.shape[1]imagenew.height=data.shape[0]imagenew.title="%s%d"%(imagenew.title,ifnotimagenew.edit(parent=self.parent()):returnself.number+=1image=ImageParam()image.title=imagenew.titleshape=(imagenew.height,imagenew.width)dtype=imagenew.dtypeifimagenew.type=='zeros':image.data=np.zeros(shape,dtype=dtypeelifimagenew.type=='empty':image.data=np.empty(shape,dtype=dtypeelifimagenew.type=='rand':data=np.random.rand(*shape)fromguiqwtimportioimage.data=io.scale_data_to_dtype(dataself.add_object(image)
-
defopen_image(self):"""Openimagefile"""fromguiqwt.qthelpersimportexec_images_open_dialogforfilename,datainexec_images_open_dialogapp_name=APP_NAMEos.chdir(osp.dirname(filename))image=ImageParam()image.title=filenameimage.data=dataifosp.splitext(filename)[1].lower()==importdicomdcm=dicom.read_file(filename,stop_before_pixelsimage.metadata={}forattr_strindir(dcm):ifattr_str!='GroupLength':image.metadata[attr_str]=self.add_object(image)defsave_image(self):"""Saveselectedimage"""rows=self._get_selected_rows()forrowinrows:obj=self.objects[row]fromguiqwt.qthelpersimportexec_image_save_dialogfilename=exec_image_save_dialog(obj.dataapp_nameiffilename:os.chdir(osp.dirname(filename))
classDockablePlotWidget(DockableWidget):LOCATION=Qt.RightDockWidgetAreadef__init__(self,parent,plotwidgetclass,toolbarsuper(DockablePlotWidget,self).__init__(parentself.toolbar=toolbarlayout=QVBoxLayout()
-
self.plotwidget=plotwidgetclass()layout.addWidget(self.plotwidget)self.setLayout(layout)self.setup()defget_plot(self):returnself.plotwidget.plotdefsetup(self):title=unicode(self.toolbar.windowTitle())self.plotwidget.add_toolbar(self.toolbar,titleifisinstance(self.plotwidget,ImageWidget):self.plotwidget.register_all_image_toolselse:self.plotwidget.register_all_curve_tools#------DockableWidgetAPIdefvisibility_changed(self,enable):"""DockWidgetvisibilityhaschanged"""DockableWidget.visibility_changed(self,enableself.toolbar.setVisible(enable)
classDockableTabWidget(QTabWidget,DockableWidgetMixinLOCATION=Qt.LeftDockWidgetAreadef__init__(self,parent):QTabWidget.__init__(self,parent)DockableWidgetMixin.__init__(self,parent)
try:fromspyderlib.widgets.internalshellimportInternalShellclassDockableConsole(InternalShell,DockableWidgetMixinLOCATION=Qt.BottomDockWidgetAreadef__init__(self,parent,namespace,messageInternalShell.__init__(self,parent=parentmessage=message,
-
multithreaded=TrueDockableWidgetMixin.__init__(self,parentself.setup()defsetup(self):font=QFont("Couriernew")font.setPointSize(10)self.set_font(font)self.set_codecompletion_auto(True)self.set_calltips(True)self.setup_calltips(size=600,font=fontself.setup_completion(size=(300,180),exceptImportError:DockableConsole=None
classSiftProxy(object):def__init__(self,win):self.win=winself.s=self.win.signalft.objectsself.i=self.win.imageft.objects
classMainWindow(QMainWindow):def__init__(self):QMainWindow.__init__(self)
self.setWindowIcon(get_icon('sift.svg'))self.setWindowTitle(APP_NAME)#Welcomemessageinstatusbar:status=self.statusBar()status.showMessage(_("Welcometo%s!")%APP_NAME
self.signal_toolbar=self.addToolBar(_("SignalProcessingToolbar"self.image_toolbar=self.addToolBar(_("ImageProcessingToolbar"
-
#Signalscurveplot_toolbar=self.addToolBar(_("CurvePlottingToolbar"self.curvewidget=DockablePlotWidget(self,curveplot_toolbarcurveplot=self.curvewidget.get_plot()curveplot.add_item(make.legend("TR"))self.signalft=SignalFT(self,plot=curveplotself.signalft.setup(self.signal_toolbar)#Imagesimagevis_toolbar=self.addToolBar(_("ImageVisualizationToolbar"self.imagewidget=DockablePlotWidget(self,imagevis_toolbarself.imageft=ImageFT(self,self.imagewidgetself.imageft.setup(self.image_toolbar)
forobjectftin(self.signalft,self.imageftself.connect(objectft,SIGNAL("status_message(QString)"status.showMessage)#Mainwindowwidgetsself.tabwidget=DockableTabWidget(self)self.tabwidget.setMaximumWidth(500)self.tabwidget.addTab(self.signalft,get_icon_("Signals"))self.tabwidget.addTab(self.imageft,get_icon_("Images"))self.add_dockwidget(self.tabwidget,_(u"Mainpanel"#self.setCentralWidget(self.tabwidget)self.curve_dock=self.add_dockwidget(self.title=self.image_dock=self.add_dockwidget(self.title=_("Imagevisualizationpanel"self.tabifyDockWidget(self.curve_dock,selfself.connect(self.tabwidget,SIGNAL('currentChanged(int)'self.tab_index_changed)self.connect(self.signalft,SIGNAL('object_added()'
-
lambda:self.tabwidget.setCurrentIndexself.connect(self.imageft,SIGNAL('object_added()'lambda:self.tabwidget.setCurrentIndex#Filemenuself.quit_action=create_action(self,_("Quit"icon=get_std_icontip=_("Quitapplication"triggered=self.closeself.file_menu=self.menuBar().addMenu(_("File"self.connect(self.file_menu,SIGNAL("aboutToShow()"self.update_file_menu)#Editmenuself.edit_menu=self.menuBar().addMenu(_("&Edit"self.connect(self.edit_menu,SIGNAL("aboutToShow()"self.update_edit_menu)#Operationmenuself.operation_menu=self.menuBar().addMenuself.connect(self.operation_menu,SIGNAL("aboutToShow()"self.update_operation_menu)#Processingmenuself.proc_menu=self.menuBar().addMenu(_("Processing"self.connect(self.proc_menu,SIGNAL("aboutToShow()"self.update_proc_menu)#Viewmenuself.view_menu=view_menu=self.createPopupMenuview_menu.setTitle(_(u"&View"))self.menuBar().addMenu(view_menu)#Helpmenuhelp_menu=self.menuBar().addMenu("?")about_action=create_action(self,_("About..."icon=get_std_icon
-
triggered=self.add_actions(help_menu,(about_action,))#Eventuallyaddaninternalconsole(requires'spyderlib')self.sift_proxy=SiftProxy(self)ifDockableConsoleisNone:self.console=Noneelse:importtime,scipy.signalassps,scipy.ndimagens={'sift':self.sift_proxy,'np':np,'sps':sps,'spi':spi,'os':os,'sys':sys,'osp':osp,msg="Example:sift.s[0]returnssignalobject#0"Modulesimportedatstartup:"\"os,sys,os.pathasosp,time,""numpyasnp,scipy.signalassps,scipy.ndimageasspi"self.console=DockableConsole(self,namespaceself.add_dockwidget(self.console,_(u"Console"self.connect(self.console.interpreter.widget_proxySIGNAL("new_prompt(QString)"lambdatxt:self.refresh_lists#Updateselectiondependentactionsself.update_actions()#Showmainwindowandraisethesignalplotpanelself.show()self.curve_dock.raise_()#------GUIrefresh/setupdefadd_dockwidget(self,child,title):"""AddQDockWidgetandtoggleViewAction"""dockwidget,location=child.create_dockwidgetself.addDockWidget(location,dockwidget)returndockwidgetdefrefresh_lists(self):
-
self.signalft.refresh_list()self.imageft.refresh_list()defupdate_actions(self):self.signalft.selection_changed()self.imageft.selection_changed()is_signal=self.tabwidget.currentWidget()self.signal_toolbar.setVisible(is_signal)self.image_toolbar.setVisible(notis_signaldeftab_index_changed(self,index):dock=(self.curve_dock,self.image_dock)[indexdock.raise_()self.update_actions()
defupdate_file_menu(self):self.file_menu.clear()objectft=self.tabwidget.currentWidget()actions=objectft.file_actions+[None,selfadd_actions(self.file_menu,actions)
defupdate_edit_menu(self):self.edit_menu.clear()objectft=self.tabwidget.currentWidget()add_actions(self.edit_menu,objectft.edit_actionsdefupdate_operation_menu(self):self.operation_menu.clear()objectft=self.tabwidget.currentWidget()add_actions(self.operation_menu,objectft.operation_actionsdefupdate_proc_menu(self):self.proc_menu.clear()objectft=self.tabwidget.currentWidget()add_actions(self.proc_menu,objectft.processing_actions#------?
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
defabout(self):QMessageBox.about(self,_("About")+APP_NAME"""%sv%s
%s%sPierreRaybaut
Copyright©2010CEAPython%s,Qt%s,PyQt%s%s%s"""(APP_NAME,VERSION,APP_DESC,_("Developpedby"platform.python_version(),QT_VERSION_STR,PYQT_VERSION_STR,_(defcloseEvent(self,event):ifself.consoleisnotNone:self.console.exit_interpreter()event.accept()
defrun():fromguidataimportqapplicationapp=qapplication()window=MainWindow()window.show()app.exec_()
if__name__=='__main__':run()
©Copyright2009-2012,CEA-Commissariatàl'EnergieAtomiqueetauxEnergiesAlternatives.
CreatedusingSphinx1.0.8.
http://sphinx.pocoo.org/
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
-
MakingexecutableWindowsprograms
Thepy2exePythonlibraryisanextensiontoPythondistutilsmodulewhichconvertsPythonscriptsintoexecutableWindowsprograms,abletorunwithoutrequiringaPythoninstallation.
Makingsuchanexecutableprogrammaybeanontrivialtaskwhenthescriptdependenciesincludelibrarieswithdataorextensions,suchasPyQt4orguidataandguiqwt.Thistaskhasbeenconsiderablysimplifiedthankstothehelperfunctionsprovidedbyguidata.disthelpers.
-
ExampleThisexampleisincludedinguiqwtsourcepackage(seethepy2exe_exampledirectory).
Simpleexamplescriptnamedsimpledialog.pywwhichisbasedonguiqwt(andimplicitelyonguidata):
fromguiqwt.plotimportImageDialogfromguiqwt.builderimportmake
classVerySimpleDialog(ImageDialog):defset_data(self,data):plot=self.get_plot()item=make.trimage(data)plot.add_item(item,z=0)plot.set_active_item(item)plot.replot()
if__name__=="__main__":importnumpyasnpfromguidataimportqapplicationqapplication()dlg=VerySimpleDialog()dlg.set_data(np.random.rand(100,100))dlg.exec_()
Thesetup.pyscriptmaybewrittenasthefollowing:
fromdistutils.coreimportsetupimportpy2exe#Patchingdistutilssetupfromguidata.disthelpersimport(remove_build_dist,get_default_dll_excludes,
-
add_modules)
#Removingoldbuild/distfoldersremove_build_dist()
#Including/excludingDLLsandPythonmodulesEXCLUDES=get_default_excludes()INCLUDES=[]DLL_EXCLUDES=get_default_dll_excludes()DATA_FILES=create_vs2008_data_files()
#Configuring/includingPythonmodulesadd_modules(('PyQt4','guidata','guiqwt'),DATA_FILES
setup(options={"py2exe":{"compressed":2,"optimize""includes":INCLUDES,"excludes""dll_excludes":DLL_EXCLUDES"dist_dir":"dist",},},data_files=DATA_FILES,windows=[{"script":"simpledialog.pyw","dest_base":"simpledialog","version":"1.0.0","company_name":u"CEA","copyright":u"Copyright©2010CEA-PierreRaybaut""name":"Simpledialogbox","description":"Simpledialogbox",},],zipfile=None,)
MaketheWindowsexecutableprogramwiththefollowingcommand:
-
indexmodules |next |previous |guiqwtv2.2.1documentation »
pythonsetup.pypy2exe
©Copyright2009-2012,CEA-Commissariatàl'EnergieAtomiqueetauxEnergiesAlternatives.
CreatedusingSphinx1.0.8.
http://sphinx.pocoo.org/
-
indexmodules |previous |guiqwtv2.2.1documentation »
-
GUIQwtreference
-
guiqwt.pyplotThepyplotmoduleprovidesaninteractiveplottinginterfacesimilartoMatplotlib‘s,i.e.withMATLAB-likesyntax.
Theguiqwt.pyplotmodulewasdesignedtobeascloseaspossibletothematplotlib.pyplotmodule,sothatonecouldeasilyswitchbetweenthesetwomodulesbysimplychangingtheimportstatement.Basically,ifguiqwtdoessupporttheplottingcommandscalledinyourscript,replacingimportmatplotlib.pyplotbyimportguiqwt.pyplotshouldsuffice,asshowninthefollowingexample:
Simpleexampleusingmatplotlib:
importmatplotlib.pyplotaspltimportnumpyasnpx=np.linspace(-10,10)plt.plot(x,x**2,'r+')plt.show()
Switchingfrommatplotlibtoguiqwtistrivial:
importguiqwt.pyplotasplt#onlythislinehaschanged!importnumpyasnpx=np.linspace(-10,10)plt.plot(x,x**2,'r+')plt.show()
Examples
-
[source]
[source]
[source]
>>>importnumpyasnp>>>fromguiqwt.pyplotimport*#uglybutacceptableinaninteractivesession>>>ion()#switchingtointeractivemode>>>x=np.linspace(-5,5,1000)>>>figure(1)>>>subplot(2,1,1)>>>plot(x,np.sin(x),"r+")>>>plot(x,np.cos(x),"g-")>>>errorbar(x,-1+x**2/20+.2*np.random.rand(len(x)),>>>xlabel("Axex")>>>ylabel("Axey")>>>subplot(2,1,2)>>>img=np.fromfunction(lambdax,y:np.sin((x/200.>>>xlabel("pixels")>>>ylabel("pixels")>>>zlabel("intensity")>>>gray()>>>imshow(img)>>>figure("plotyy")>>>plotyy(x,np.sin(x),x,np.cos(x))>>>ylabel("sinus","cosinus")>>>show()
Reference
guiqwt.pyplot.interactive(state)Toggleinteractivemode
guiqwt.pyplot.ion()Turninteractivemodeon
guiqwt.pyplot.ioff()Turninteractivemodeoff
-
[source]
[source]
[source]
[source]
[source]
[source]
[source]
[source]
[source]
guiqwt.pyplot.figure(N=None)Createanewfigure
guiqwt.pyplot.gcf()Getcurrentfigure
guiqwt.pyplot.gca()Getcurrentaxes
guiqwt.pyplot.show(mainloop=True)ShowallfiguresandenterQteventloopThisshouldbethelastlineofyourscript
guiqwt.pyplot.subplot(n,m,k)Createasubplotcommand
Example:importnumpyasnpx=np.linspace(-5,5,1000)figure(1)subplot(2,1,1)plot(x,np.sin(x),“r+”)subplot(2,1,2)plot(x,np.cos(x),“g-”)show()
guiqwt.pyplot.close(N=None,all=False)Closefigure
guiqwt.pyplot.title(text)Setcurrentfiguretitle
guiqwt.pyplot.xlabel(bottom='',top='')Setcurrentx-axislabel
guiqwt.pyplot.ylabel(left='',right='')Setcurrenty-axislabel
-
[source]
[source]
[source]
[source]
[source]
[source]
[source]
guiqwt.pyplot.zlabel(label)Setcurrentz-axislabel
guiqwt.pyplot.yreverse(reverse)Sety-axisdirectionofincreasingvalues
reverse=False(default)
y-axisvaluesincreasefrombottomtotop
reverse=True
y-axisvaluesincreasefromtoptobottom
guiqwt.pyplot.grid(act)Togglegridvisibility
guiqwt.pyplot.legend(pos='TR')Addlegendtocurrentaxes(pos=’TR’,‘TL’,‘BR’,...)
guiqwt.pyplot.colormap(name)Setcolormaptoname
guiqwt.pyplot.savefig(fname,format=None,draft=False)Savefigure
CurrentlysupportsPDFandPNGformatsonly
guiqwt.pyplot.plot(*args,**kwargs)Plotcurves
Example:
importnumpyasnpx=np.linspace(-5,5,1000)plot(x,np.sin(x),“r+”)plot(x,np.cos(x),“g-”)show()
-
[source]
[source]
[source]
[source]
[source]
guiqwt.pyplot.plotyy(x1,y1,x2,y2)Plotcurveswithtwodifferentyaxes
Example:
importnumpyasnpx=np.linspace(-5,5,1000)plotyy(x,np.sin(x),x,np.cos(x))ylabel(“sinus”,“cosinus”)show()
guiqwt.pyplot.semilogx(*args,**kwargs)Plotcurveswithlogarithmicx-axisscale
Example:
importnumpyasnpx=np.linspace(-5,5,1000)semilogx(x,np.sin(12*x),“g-”)show()
guiqwt.pyplot.semilogy(*args,**kwargs)Plotcurveswithlogarithmicy-axisscale
Example:
importnumpyasnpx=np.linspace(-5,5,1000)semilogy(x,np.sin(12*x),“g-”)show()
guiqwt.pyplot.loglog(*args,**kwargs)Plotcurveswithlogarithmicx-axisandy-axisscales
Example:
importnumpyasnpx=np.linspace(-5,5,1000)loglog(x,np.sin(12*x),“g-”)show()
guiqwt.pyplot.errorbar(*args,**kwargs)Plotcurveswitherrorbars
Example:
-
[source]
[source]
[source]
importnumpyasnpx=np.linspace(-5,5,1000)errorbar(x,-1+x**2/20+.2*np.random.rand(len(x)),x/20)show()
guiqwt.pyplot.hist(data,bins=None,logscale=None,title=None,color=None)
Plot1-Dhistogram
Example:
fromnumpy.randomimportnormaldata=normal(0,1,(2000,))hist(data)show()
guiqwt.pyplot.imshow(data,interpolation=None,mask=None)Displaytheimageindatatocurrentaxesinterpolation:‘nearest’,‘linear’(default),‘antialiasing’
Example:
importnumpyasnpx=np.linspace(-5,5,1000)img=np.fromfunction(lambdax,y:
np.sin((x/200.)*(y/200.)**2),(1000,1000))
gray()imshow(img)show()
guiqwt.pyplot.pcolor(*args)Createapseudocolorplotofa2-Darray
Example:
importnumpyasnpr=np.linspace(1.,16,100)th=np.linspace(0.,np.pi,100)R,TH=np.meshgrid(r,th)X=R*np.cos(TH)Y=R*np.sin(TH)Z=4*TH+Rpcolor(X,Y,Z)show()
-
guiqwt.widgets.fit
Thefitmoduleprovidesaninteractivecurvefittingwidget/dialogallowing:
tofitdatamanually(bymovingsliders)orautomatically(withstandardoptimizationalgorithmsprovidedbyscipy).
Example
importnumpyasnp
fromguiqwt.widgets.fitimportFitParam,guifit
deftest():x=np.linspace(-10,10,1000)y=np.cos(1.5*x)+np.random.rand(x.shape[0])*.2deffit(x,params):a,b=paramsreturnnp.cos(b*x)+aa=FitParam("Offset",1.,0.,2.)b=FitParam("Frequency",2.,1.,10.,logscaleparams=[a,b]values=guifit(x,y,fit,params,xlabel="Time(s)"printvaluesprint[param.valueforparaminparams]
if__name__=="__main__":test()
-
[source]
[source]
Reference
guiqwt.widgets.fit.guifit(x,y,fitfunc,fitparams,fitargs=None,fitkwargs=None,wintitle=None,title=None,xlabel=None,ylabel=None,param_cols=1,auto_fit=True,winsize=None,winpos=None)
GUI-basedcurvefittingtool
classguiqwt.widgets.fit.FitDialog(wintitle=None,icon='guiqwt.svg',edit=True,toolbar=False,options=None,parent=None,panels=None,param_cols=1,legend_anchor='TR',auto_fit=False)
classRenderFlagsQWidget.RenderFlags(QWidget.RenderFlags)QWidget.RenderFlags(int)QWidget.RenderFlags()
FitDialog.accept()
-
QDialog.accept()
FitDialog.acceptDrops()QWidget.acceptDrops()->bool
FitDialog.acceptedQDialog.accepted[][signal]
FitDialog.actions()QWidget.actions()->list-of-QAction
FitDialog.activateWindow()QWidget.activateWindow()
FitDialog.activate_default_tool()Activatedefaulttool
FitDialog.addAction()QWidget.addAction(QAction)
FitDialog.addActions()QWidget.addActions(list-of-QAction)
FitDialog.add_panel(panel)Registerapaneltotheplotmanager
Plotmanager’sregistrationsequenceisthefollowing:
1. addplots2. addpanels3. addtools
FitDialog.add_plot(plot,plot_id=)
-
Registeraplottotheplotmanager:
plot:guiqwt.curve.CurvePlotorguiqwt.image.ImagePlotobjectplot_id(defaultidistheplotobject’sid:id(plot)):uniqueIDidentifyingtheplot(anyPythonobject),thisIDwillbeaskedbythemanagertoaccessthisplotlater.
Plotmanager’sregistrationsequenceisthefollowing:
1. addplots2. addpanels3. addtools
FitDialog.add_separator_tool(toolbar_id=None)Registeraseparatortooltotheplotmanager:theseparatortoolisjustatoolwhichinsertaseparatorintheplotcontextmenu
FitDialog.add_tool(ToolKlass,*args,**kwargs)Registeratooltothemanager
ToolKlass:tool’sclass(guiqwtbuiltintoolsaredefinedinmoduleguiqwt.tools)*args:argumentssenttothetool’sclass**kwargs:keywordargumentssenttothetool’sclass
Plotmanager’sregistrationsequenceisthefollowing:
1. addplots2. addpanels3. addtools
FitDialog.add_toolbar(toolbar,toolbar_id='default')
-
Addtoolbartotheplotmanager
toolbar:aQToolBarobjecttoolbar_id:toolbar’sid(defaultidisstring“default”)
FitDialog.adjustSize()QWidget.adjustSize()
FitDialog.autoFillBackground()QWidget.autoFillBackground()->bool
FitDialog.backgroundRole()QWidget.backgroundRole()->QPalette.ColorRole
FitDialog.baseSize()QWidget.baseSize()->QSize
FitDialog.blockSignals()QObject.blockSignals(bool)->bool
FitDialog.childAt()QWidget.childAt(QPoint)->QWidgetQWidget.childAt(int,int)->QWidget
FitDialog.children()QObject.children()->list-of-QObject
FitDialog.childrenRect()QWidget.childrenRect()->QRect
FitDialog.childrenRegion()QWidget.childrenRegion()->QRegion
FitDialog.clearFocus()
-
QWidget.clearFocus()
FitDialog.clearMask()QWidget.clearMask()
FitDialog.close()QWidget.close()->bool
FitDialog.closeEvent()QDialog.closeEvent(QCloseEvent)
FitDialog.colorCount()QPaintDevice.colorCount()->int
FitDialog.configure_panels()Callalltheregistredpanels‘configure_panel’methodstofinalizetheobjectconstruction(thisallowstousetoolsregisteredtothesameplotmanagerasthepanelitselfwithbreakingtheregistrationsequence:“addplots,thenpanels,thentools”)
FitDialog.connect()QObject.connect(QObject,SIGNAL(),QObject,SLOT(),Qt.ConnectionType=Qt.AutoConnection)->boolQObject.connect(QObject,SIGNAL(),callable,Qt.ConnectionType=Qt.AutoConnection)->boolQObject.connect(QObject,SIGNAL(),SLOT(),Qt.ConnectionType=Qt.AutoConnection)->bool
FitDialog.contentsMargins()QWidget.contentsMargins()->QMargins
FitDialog.contentsRect()
-
QWidget.contentsRect()->QRect
FitDialog.contextMenuEvent()QDialog.contextMenuEvent(QContextMenuEvent)
FitDialog.contextMenuPolicy()QWidget.contextMenuPolicy()->Qt.ContextMenuPolicy
FitDialog.cursor()QWidget.cursor()->QCursor
FitDialog.customContextMenuRequestedQWidget.customContextMenuRequested[QPoint][signal]
FitDialog.deleteLater()QObject.deleteLater()
FitDialog.depth()QPaintDevice.depth()->int
FitDialog.destroyedQObject.destroyed[QObject][signal]QObject.destroyed[][signal]
FitDialog.devType()QWidget.devType()->int
FitDialog.disconnect()QObject.disconnect(QObject,SIGNAL(),QObject,SLOT())->boolQObject.disconnect(QObject,SIGNAL(),callable)->bool
FitDialog.done()QDialog.done(int)
-
FitDialog.dumpObjectInfo()QObject.dumpObjectInfo()
FitDialog.dumpObjectTree()QObject.dumpObjectTree()
FitDialog.dynamicPropertyNames()QObject.dynamicPropertyNames()->list-of-QByteArray
FitDialog.effectiveWinId()QWidget.effectiveWinId()->sip.voidptr
FitDialog.emit()QObject.emit(SIGNAL(),...)
FitDialog.ensurePolished()QWidget.ensurePolished()
FitDialog.eventFilter()QDialog.eventFilter(QObject,QEvent)->bool
FitDialog.exec_()QDialog.exec_()->int
FitDialog.extension()QDialog.extension()->QWidget
FitDialog.find()QWidget.find(sip.voidptr)->QWidget
FitDialog.findChild()QObject.findChild(type,QStringname=QString())->QObjectQObject.findChild(tuple,QStringname=QString())->QObject
-
FitDialog.findChildren()QObject.findChildren(type,QStringname=QString())->list-of-QObjectQObject.findChildren(tuple,QStringname=QString())->list-of-QObjectQObject.findChildren(type,QRegExp)->list-of-QObjectQObject.findChildren(tuple,QRegExp)->list-of-QObject
FitDialog.finishedQDialog.finished[int][signal]
FitDialog.focusPolicy()QWidget.focusPolicy()->Qt.FocusPolicy
FitDialog.focusProxy()QWidget.focusProxy()->QWidget
FitDialog.focusWidget()QWidget.focusWidget()->QWidget
FitDialog.font()QWidget.font()->QFont
FitDialog.fontInfo()QWidget.fontInfo()->QFontInfo
FitDialog.fontMetrics()QWidget.fontMetrics()->QFontMetrics
FitDialog.foregroundRole()QWidget.foregroundRole()->QPalette.ColorRole
FitDialog.frameGeometry()QWidget.frameGeometry()->QRect
-
FitDialog.frameSize()QWidget.frameSize()->QSize
FitDialog.geometry()QWidget.geometry()->QRect
FitDialog.getContentsMargins()QWidget.getContentsMargins()->(int,int,int,int)
FitDialog.get_active_plot()Returntheactiveplot
Theactiveplotistheplotwhosecanvashasthefocusotherwiseit’sthe“default”plot
FitDialog.get_active_tool()Returnactivetool
FitDialog.get_context_menu(plot=None)Returnwidgetcontextmenu–builtusingactivetools
FitDialog.get_contrast_panel()Conveniencefunctiontogetthecontrastadjustmentpanel
ReturnNoneifthecontrastadjustmentpanelhasnotbeenaddedtothismanager
FitDialog.get_default_plot()Returndefaultplot
Thedefaultplotistheplotonwhichtoolsandpanelswillact.
FitDialog.get_default_tool()
-
Getdefaulttool
FitDialog.get_default_toolbar()Returndefaulttoolbar
FitDialog.get_fitfunc_arguments()Returnfitargsandfitkwargs
FitDialog.get_itemlist_panel()Conveniencefunctiontogettheitemlistpanel
ReturnNoneiftheitemlistpanelhasnotbeenaddedtothismanager
FitDialog.get_main()Returnthemain(parent)widget
Notethatforpy:class:guiqwt.plot.CurveWidgetorguiqwt.plot.ImageWidgetobjects,thismethodwillreturnthewidgetitselfbecausetheplotmanagerisintegratedtoit.
FitDialog.get_panel(panel_id)ReturnpanelfromitsIDPanelIDsarelistedinmoduleguiqwt.panels
FitDialog.get_plot(plot_id=)
Returnplotassociatedtoplot_id(ifmethodiscalledwithoutspecifyingtheplot_idparameter,returnthedefaultplot)
FitDialog.get_plots()Returnallregisteredplots
-
FitDialog.get_tool(ToolKlass)Returntoolinstancefromitsclass
FitDialog.get_toolbar(toolbar_id='default')ReturntoolbarfromitsID
toolbar_id:toolbar’sid(defaultidisstring“default”)
FitDialog.get_values()Conveniencemethodtogetfitparametervalues
FitDialog.get_xcs_panel()ConveniencefunctiontogettheX-axiscrosssectionpanel
ReturnNoneiftheX-axiscrosssectionpanelhasnotbeenaddedtothismanager
FitDialog.get_ycs_panel()ConveniencefunctiontogettheY-axiscrosssectionpanel
ReturnNoneiftheY-axiscrosssectionpanelhasnotbeenaddedtothismanager
FitDialog.grabGesture()QWidget.grabGesture(Qt.GestureType,Qt.GestureFlagsflags=Qt.GestureFlags(0))
FitDialog.grabKeyboard()QWidget.grabKeyboard()
FitDialog.grabMouse()QWidget.grabMouse()QWidget.grabMouse(QCursor)
-
FitDialog.grabShortcut()QWidget.grabShortcut(QKeySequence,Qt.ShortcutContextcontext=Qt.WindowShortcut)->int
FitDialog.graphicsEffect()QWidget.graphicsEffect()->QGraphicsEffect
FitDialog.graphicsProxyWidget()QWidget.graphicsProxyWidget()->QGraphicsProxyWidget
FitDialog.hasFocus()QWidget.hasFocus()->bool
FitDialog.hasMouseTracking()QWidget.hasMouseTracking()->bool
FitDialog.height()QWidget.height()->int
FitDialog.heightForWidth()QWidget.heightForWidth(int)->int
FitDialog.heightMM()QPaintDevice.heightMM()->int
FitDialog.hide()QWidget.hide()
FitDialog.inherits()QObject.inherits(str)->bool
FitDialog.inputContext()QWidget.inputContext()->QInputContext
-
FitDialog.inputMethodHints()QWidget.inputMethodHints()->Qt.InputMethodHints
FitDialog.inputMethodQuery()QWidget.inputMethodQuery(Qt.InputMethodQuery)->QVariant
FitDialog.insertAction()QWidget.insertAction(QAction,QAction)
FitDialog.insertActions()QWidget.insertActions(QAction,list-of-QAction)
FitDialog.installEventFilter()QObject.installEventFilter(QObject)
FitDialog.isActiveWindow()QWidget.isActiveWindow()->bool
FitDialog.isAncestorOf()QWidget.isAncestorOf(QWidget)->bool
FitDialog.isEnabled()QWidget.isEnabled()->bool
FitDialog.isEnabledTo()QWidget.isEnabledTo(QWidget)->bool
FitDialog.isEnabledToTLW()QWidget.isEnabledToTLW()->bool
FitDialog.isFullScreen()QWidget.isFullScreen()->bool
FitDialog.isHidden()
-
QWidget.isHidden()->bool
FitDialog.isLeftToRight()QWidget.isLeftToRight()->bool
FitDialog.isMaximized()QWidget.isMaximized()->bool
FitDialog.isMinimized()QWidget.isMinimized()->bool
FitDialog.isModal()QWidget.isModal()->bool
FitDialog.isRightToLeft()QWidget.isRightToLeft()->bool
FitDialog.isSizeGripEnabled()QDialog.isSizeGripEnabled()->bool
FitDialog.isTopLevel()QWidget.isTopLevel()->bool
FitDialog.isVisible()QWidget.isVisible()->bool
FitDialog.isVisibleTo()QWidget.isVisibleTo(QWidget)->bool
FitDialog.isWidgetType()QObject.isWidgetType()->bool
FitDialog.isWindow()
-
QWidget.isWindow()->bool
FitDialog.isWindowModified()QWidget.isWindowModified()->bool
FitDialog.keyPressEvent()QDialog.keyPressEvent(QKeyEvent)
FitDialog.keyboardGrabber()QWidget.keyboardGrabber()->QWidget
FitDialog.killTimer()QObject.killTimer(int)
FitDialog.layout()QWidget.layout()->QLayout
FitDialog.layoutDirection()QWidget.layoutDirection()->Qt.LayoutDirection
FitDialog.locale()QWidget.locale()->QLocale
FitDialog.logicalDpiX()QPaintDevice.logicalDpiX()->int
FitDialog.logicalDpiY()QPaintDevice.logicalDpiY()->int
FitDialog.lower()QWidget.lower()
FitDialog.mapFrom()QWidget.mapFrom(QWidget,QPoint)->QPoint
-
FitDialog.mapFromGlobal()QWidget.mapFromGlobal(QPoint)->QPoint
FitDialog.mapFromParent()QWidget.mapFromParent(QPoint)->QPoint
FitDialog.mapTo()QWidget.mapTo(QWidget,QPoint)->QPoint
FitDialog.mapToGlobal()QWidget.mapToGlobal(QPoint)->QPoint
FitDialog.mapToParent()QWidget.mapToParent(QPoint)->QPoint
FitDialog.mask()QWidget.mask()->QRegion
FitDialog.maximumHeight()QWidget.maximumHeight()->int
FitDialog.maximumSize()QWidget.maximumSize()->QSize
FitDialog.maximumWidth()QWidget.maximumWidth()->int
FitDialog.metaObject()QObject.metaObject()->QMetaObject
FitDialog.minimumHeight()QWidget.minimumHeight()->int
FitDialog.minimumSize()
-
QWidget.minimumSize()->QSize
FitDialog.minimumSizeHint()QDialog.minimumSizeHint()->QSize
FitDialog.minimumWidth()QWidget.minimumWidth()->int
FitDialog.mouseGrabber()QWidget.mouseGrabber()->QWidget
FitDialog.move()QWidget.move(QPoint)QWidget.move(int,int)
FitDialog.moveToThread()QObject.moveToThread(QThread)
FitDialog.nativeParentWidget()QWidget.nativeParentWidget()->QWidget
FitDialog.nextInFocusChain()QWidget.nextInFocusChain()->QWidget
FitDialog.normalGeometry()QWidget.normalGeometry()->QRect
FitDialog.numColors()QPaintDevice.numColors()->int
FitDialog.objectName()QObject.objectName()->QString
FitDialog.open()
-
QDialog.open()
FitDialog.orientation()QDialog.orientation()->Qt.Orientation
FitDialog.overrideWindowFlags()QWidget.overrideWindowFlags(Qt.WindowFlags)
FitDialog.overrideWindowState()QWidget.overrideWindowState(Qt.WindowStates)
FitDialog.paintEngine()QWidget.paintEngine()->QPaintEngine
FitDialog.paintingActive()QPaintDevice.paintingActive()->bool
FitDialog.palette()QWidget.palette()->QPalette
FitDialog.parent()QObject.parent()->QObject
FitDialog.parentWidget()QWidget.parentWidget()->QWidget
FitDialog.physicalDpiX()QPaintDevice.physicalDpiX()->int
FitDialog.physicalDpiY()QPaintDevice.physicalDpiY()->int
FitDialog.pos()QWidget.pos()->QPoint
-
FitDialog.previousInFocusChain()QWidget.previousInFocusChain()->QWidget
FitDialog.property()QObject.property(str)->QVariant
FitDialog.pyqtConfigure()QObject.pyqtConfigure(...)
EachkeywordargumentiseitherthenameofaQtpropertyoraQtsignal.Forpropertiesthepropertyissettothegivenvaluewhichshouldbeofanappropriatetype.Forsignalsthesignalisconnectedtothegivenvaluewhichshouldbeacallable.
FitDialog.raise_()QWidget.raise_()
FitDialog.rect()QWidget.rect()->QRect
FitDialog.refresh(slider_value=None)RefreshFitTooldialogbox
FitDialog.register_all_curve_tools()Registerstandard,curve-relatedandothertools
Seealso
methods
guiqwt.plot.PlotManager.add_tool()guiqwt.plot.PlotManager.register_standard_tools()guiqwt.plot.PlotManager.register_other_tools()guiqwt.plot.PlotManager.register_curve_tools()
-
guiqwt.plot.PlotManager.register_image_tools()guiqwt.plot.PlotManager.register_all_image_tools()
FitDialog.register_all_image_tools()Registerstandard,image-relatedandothertools
Seealso
methods
guiqwt.plot.PlotManager.add_tool()guiqwt.plot.PlotManager.register_standard_tools()guiqwt.plot.PlotManager.register_other_tools()guiqwt.plot.PlotManager.register_curve_tools()guiqwt.plot.PlotManager.register_image_tools()guiqwt.plot.PlotManager.register_all_curve_tools()
FitDialog.register_curve_tools()Registeronlycurve-relatedtools
Seealso
methods
guiqwt.plot.PlotManager.add_tool()guiqwt.plot.PlotManager.register_standard_tools()guiqwt.plot.PlotManager.register_other_tools()guiqwt.plot.PlotManager.register_image_tools()
FitDialog.register_image_tools()Registeronlyimage-relatedtools
Seealso
-
methods
guiqwt.plot.PlotManager.add_tool()guiqwt.plot.PlotManager.register_standard_tools()guiqwt.plot.PlotManager.register_other_tools()guiqwt.plot.PlotManager.register_curve_tools()
FitDialog.register_other_tools()Registerothercommontools
Seealso
methods
guiqwt.plot.PlotManager.add_tool()guiqwt.plot.PlotManager.register_standard_tools()guiqwt.plot.PlotManager.register_curve_tools()guiqwt.plot.PlotManager.register_image_tools()
FitDialog.register_standard_tools()Registeringbasictoolsforstandardplotdialog–>topofthecontext-menu
FitDialog.register_tools()Registertheplottingdialogboxtools:thebaseimplementationprovidesstandard,curve-relatedandothertools-i.e.callingthismethodisexactlythesameascallingguiqwt.plot.CurveDialog.register_all_curve_tools()
Thismethodmaybeoverridentoprovideafullycustomizedsetoftools
FitDialog.reject()
-
QDialog.reject()
FitDialog.rejectedQDialog.rejected[][signal]
FitDialog.releaseKeyboard()QWidget.releaseKeyboard()
FitDialog.releaseMouse()QWidget.releaseMouse()
FitDialog.releaseShortcut()QWidget.releaseShortcut(int)
FitDialog.removeAction()QWidget.removeAction(QAction)
FitDialog.removeEventFilter()QObject.removeEventFilter(QObject)
FitDialog.render()QWidget.render(QPaintDevice,QPointtargetOffset=QPoint(),QRegionsourceRegion=QRegion(),QWidget.RenderFlagsflags=QWidget.DrawWindowBackground|QWidget.DrawChildren)QWidget.render(QPainter,QPointtargetOffset=QPoint(),QRegionsourceRegion=QRegion(),QWidget.RenderFlagsflags=QWidget.DrawWindowBackground|QWidget.DrawChildren)
FitDialog.repaint()QWidget.repaint()QWidget.repaint(int,int,int,int)QWidget.repaint(QRect)QWidget.repaint(QRegion)
FitDialog.resize()
-
QWidget.resize(QSize)QWidget.resize(int,int)
FitDialog.resizeEvent()QDialog.resizeEvent(QResizeEvent)
FitDialog.restoreGeometry()QWidget.restoreGeometry(QByteArray)->bool
FitDialog.result()QDialog.result()->int
FitDialog.saveGeometry()QWidget.save