;i  dZddlmZddlZddlmZejdZddl m cm Z ddl mZmZGdde jZGd d e jZed d d ddddddddddddgdgddd dddddgddddddd dgded!"ed#d$d%d&d'dd(d&d)dg*gZejd+d eZd,Zejed-Zed.D]8Zd/ejvr-ed/je9d0Zd1Zed d j eed dj eeZ!e!"ed23e!#d4eZ$e$"ed23ej%Z&ej'Z(e&)e(e(*ej+d5ddd6d7e(*e!d6dd6d6e(*e$d6d6d6d6e&,e-a.e/t\e-Z0ej1e0t\sJe2d8krej3dSdS)9a$ This example demonstrates the use of pyqtgraph's parametertree system. This provides a simple way to generate user interfaces that control sets of parameters. The example demonstrates a variety of different parameter types (int, float, list, etc.) as well as some customized parameter types )makeAllParamTypesN) QtWidgetszParameter Tree Example) Parameter ParameterTreec eZdZdZdZdZdS)ComplexParameterc d|d<d|d<tjj|fi||dddddd |d dd d dd |d|_|d |_|jj|j |jj|j dS) NbooltypeTvaluezA = 1/BfloatHz)namer r suffixsiPrefixzB = 1/Ag$I$I?s) pTypesGroupParameter__init__addChildparamabsigValueChangedconnectaChangedbChangedselfoptss TC:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\pyqtgraph/examples/parametertree.pyrzComplexParameter.__init__sV W &t44t444 y'AQUcghhiii y'DTWeijjkkkI&&I&& &&t}555 &&t}55555c||jd|jz |jdSNg?) blockSignal)rsetValuerr rr s r"rzComplexParameter.aChanged%1 dfllnn,$-HHHHHr#c||jd|jz |jdSr%)rr'rr rr(s r"rzComplexParameter.bChanged(r)r#N)__name__ __module__ __qualname__rrrr#r"rrsI 6 6 6IIIIIIIIr#rceZdZdZdZdS) ScalableGroupc Vd|d<d|d<gd|d<tjj|fi|dS)Ngroupr AddaddTextstrr intaddList)rrrrs r"rzScalableGroup.__init__/sEV Y111Y&t44t44444r#c dddd|}|tdt|jdzz||dddS) Ngrr5zScalableParam %dT)rr r removable renamable)rdictlenchilds)r typvals r"addNewzScalableGroup.addNew5sv     d 2c$+6F6Fq6H IPS[^jnz~ A A A A Ar#N)r+r,r-rrCr.r#r"r0r0.s7555 AAAAAr#r0Save/Restore functionalityr2z Save Stateaction)rr Restore StateAdd missing itemsr T)rr r Remove extra items)rr childrenzCustom context menuzList contextMenur menu1menu2)rr r contextzDict contextMenuTitlezWhat the user sees) changeNameinternalz*Custom parameter group (reciprocal values))rzExpandable Parameter GroupzClick to add childrenzScalableParam 1r6zdefault param 1zScalableParam 2zdefault param 2)rtiprIparamscftd|D]\}}}t|}|d|}n|}td|ztd|ztdt |ztddS)Nz tree changes:.z parameter: %sz change: %sz data: %sz ----------)printp childPathjoinrr6)rchangeschangedatapath childNames r"rYrY^s /&  vt{{5!!  II I *+++ '((( T*+++ n  r#c0td|d|dS)Nz Value changing (not finalized):  )rT)rr s r" valueChangingr_ns# EUUUEE BCCCCCr#zExample Parameterswidgetc8tadS)N)rU saveStatestater.r#r"saverdvs KKMMEEEr#c~td}td}tt||dS)N)rDrFrG)rDrFrH) addChildrenremoveChildren)rU restoreStaterc)addrems r"restorerkzs6 N OC O PCNN5c#N>>>>>r#F)showTopz!pyqtgraph example: Parameter TreezQThese are two views of the same data. They should always display the same values.r;__main__)4__doc___buildParamTypesr pyqtgraphpg pyqtgraph.QtrmkQAppapp&pyqtgraph.parametertree.parameterTypes parametertreeparameterTypesrpyqtgraph.parametertreerrrrr0rQcreaterUrYsigTreeStateChangedrr_childnamessigValueChangingrdrkr sigActivatedt setParameterssetWindowTitlet2QWidgetwin QGridLayoutlayout setLayout addWidgetQLabelshowrbrcrh compareStateeqr+execr.r#r"rs/.....""""""bi())777777777<<<<<<<< IIIIIv,III, A A A A AF) A A A& )7x00 ((&4 H H)6D I IA   I#G#Wq  N   $Wq!,N N   B  FGGGM39P"E