From 24359b5611c8d12bdbe73f49f25389eafe8169b3 Mon Sep 17 00:00:00 2001 From: PaulEcomaker Date: Sat, 5 Jul 2025 18:03:24 +0200 Subject: [PATCH 1/2] I've created an example, including screenshots and code, for the use of a Canvas and the use of an mouse-event in this Canvas --- .../examples/CanvasEvent/Components.png | Bin 0 -> 25500 bytes .../examples/CanvasEvent/Components2.png | Bin 0 -> 30197 bytes .../examples/CanvasEvent/EventPane.png | Bin 0 -> 10020 bytes .../examples/CanvasEvent/StylePaneButton1.png | Bin 0 -> 46649 bytes .../examples/CanvasEvent/StylePaneCanvas.png | Bin 0 -> 24093 bytes docs/_static/examples/CanvasEvent/design1.png | Bin 0 -> 13452 bytes .../examples/CanvasEvent/eventpanefilled.png | Bin 0 -> 9154 bytes .../examples/CanvasEvent/openeventpane.png | Bin 0 -> 26507 bytes docs/examples/CanvasEvents.rst | 307 ++++++++++++++++++ docs/index.rst | 1 + examples/CanvasEvents/Canvas_example.json | 113 +++++++ examples/CanvasEvents/Canvas_example.py | 66 ++++ 12 files changed, 487 insertions(+) create mode 100644 docs/_static/examples/CanvasEvent/Components.png create mode 100644 docs/_static/examples/CanvasEvent/Components2.png create mode 100644 docs/_static/examples/CanvasEvent/EventPane.png create mode 100644 docs/_static/examples/CanvasEvent/StylePaneButton1.png create mode 100644 docs/_static/examples/CanvasEvent/StylePaneCanvas.png create mode 100644 docs/_static/examples/CanvasEvent/design1.png create mode 100644 docs/_static/examples/CanvasEvent/eventpanefilled.png create mode 100644 docs/_static/examples/CanvasEvent/openeventpane.png create mode 100644 docs/examples/CanvasEvents.rst create mode 100644 examples/CanvasEvents/Canvas_example.json create mode 100644 examples/CanvasEvents/Canvas_example.py diff --git a/docs/_static/examples/CanvasEvent/Components.png b/docs/_static/examples/CanvasEvent/Components.png new file mode 100644 index 0000000000000000000000000000000000000000..7eb893b2b8f4dfade07d46003598ebae15455394 GIT binary patch literal 25500 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 literal 0 HcmV?d00001 diff --git a/docs/_static/examples/CanvasEvent/Components2.png b/docs/_static/examples/CanvasEvent/Components2.png new file mode 100644 index 0000000000000000000000000000000000000000..71175034f24fc2d026cc1c645c22d0a40d870be3 GIT binary patch literal 30197 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 Xd{PXPHxt37T46p3OAD0>Xn*@(t4hX$ literal 0 HcmV?d00001 diff --git a/docs/_static/examples/CanvasEvent/EventPane.png b/docs/_static/examples/CanvasEvent/EventPane.png new file mode 100644 index 0000000000000000000000000000000000000000..7099a427d5b20b86621f2419a8a3a6381c6b2e33 GIT binary patch literal 10020 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 x&QGTJZzTV}RN?>MkoSspy&Vq literal 0 HcmV?d00001 diff --git a/docs/_static/examples/CanvasEvent/StylePaneButton1.png b/docs/_static/examples/CanvasEvent/StylePaneButton1.png new file mode 100644 index 0000000000000000000000000000000000000000..b926c9855905a2a99e7fc95d2138e297ed2cc47a GIT binary patch literal 46649 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%0DO}+`SNLzeULi<)%46hBocF3{!(JF0 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

JcY*g{5^m%AeEtQAMbTUyik}M#5CzKC zPY7kvmnL)clmCi-KS^pPP<_0n#NMGw9HHDFWg!Ffg8oLj(D2y;c=aja-(hQ9M~LVz z$UjlDlAFmWg(Q5wlDN1ScKtlnGj@NUhSqjr?qjw@<#rf|>5mlvSug-9&*+z5da0yv zVUw^rm%}EKj~ag3dt}H|6^@kqSskqvLj|s6=`NXbMaI z2;%FoGc**a*sBzmMv`|^ti_))fRt711Uzc?aEUc$tKLGQbUi9lXZxBS1 zMseV`d}5<-V6dWnq5X%v(x{BZ7Fwc`2ZAwkHIwOATsfWQBpO9$ z*yQWw)im9D&=4QAF&>IN%XMtXv4WeT{lE0Nq=kFI0=L6kE+W13Xvv(*Gv6W*yIMdz zNUmaFc6=yE^{S%&h4driU&g~MEsbj3@~>>3WQ6FV^{Q!nn>%}oj#}AJpz%R}{T3Cm z2E~%P;fI@1;+u75H$cXQmhA#f`yu4NwL;}cc0^2!xhjTTZmIY3mJ2i4S-?93R!;jA zuJ%%F7`jfQR(k(ns=-qi#Hm}d%oQy^WZLFWr!TH^q^1c}$VDMJ3A}uL#k#50yqNI- z6s?tuax<$Cex=@0&XYuRjVK(zM$vC@yrMKKiSMhAQ_F3k6!yn4!!N1uPBh-@0fX8o znqJfhueqjPN9^eE&|!VOn3uQAmCTvi?0SIgZG(Du^c=+}|A2i55 zw-Rm=514$QTkfv(P+ax9+e}di_3E$*TtheoAjdtxzBWRwy{9tIR9tVsU{`nON=@vl zt)|Pn+9N@fzpWfG&U(@XT=CX|Irw5JblVv-I3bF;#sC8G+B{v0bh@H$vUoHCXT@Z* zxFkD@;AQZd%{Yqmk?O$&8Zg=Qv}=Kc@@6=l3+3Ul#>^*UwZO8Qn58;Gs%n)v`#JG( z{cBSC2>h`ZNtx^?j$-2mjT`->9N@*|QG-cO2v|frl6=8^zOu5HpSP@{qW^eMy-s#{0aqur2XG~)F)%8usbid@CrM2^^PJDTr*&(YK< z$_qyWOe{gv{uungn@XkNiF~@KxSpYD<1{OGre9IVN4nE+frk!l>}~n?lb6wHtEoQH z8mdPmoVVBu*0Q@^0f`VbzM7hYx_ID2_^J8HjoOZ{zpB_30*eWqgId^Xju}42;AA4l z$$yoJu1;$K4=HnP;y1gUk5WbedDs$N*h>jLXTKBa-)2g04Vp4e;9;NMTKFLYlt?|< z?F$rJ-n`84b9}b-O`Y@e+)PYNPNEq<`k-@z1fnfSLHqMtYYGwW$aFFCF;`GxOTfy_ zy)v8I$K;w;GPk_XZxuh4O8HLo$-KAwE#P@vuPOSWv%!9+APDM^_om@ctd3ngcR`9> z0LoFcdBmeOYG`-^LlA?ksA&2@QdWK7f@Pjiscfhf2lJJE|25@kkSTBJfzc06L7$Qk z{QTif1+6{BuxuOBy7-?6L!$kWWN?A=#$}Rc>!H8efv+1+$}R%FG~V!!ESTvLrL^Al z69(xV6Nd;=;tZFFidR$wk;i-(~INp_%@0L?U7JHwxjN z0G-;fbHN#7$R%w&M9P)D+ei%it>#8nrO+4Xab@*j5v?#v;pgYX3*xM8Y+p{U?L*X7 zw=GWy*RL0Ow)YcmmO9t;fJEIPA*0~wHN6>H;|xb$^r_kMS-<3l{>9wK;0SzRLmxW( z-H~O+`ZjXK@b4d|D}y$B2%%jqH7r|erW^%!vrPkkQdKT?gt)A1pDJ4*^S? zE;RVVf8@_(t?s6F@Ryf0vP0k0mo#5dzcfa=ei^!DCERRI=r&}6#Q)%aYEgqa%>rK12TjlZpzLDsGnBF zQUA;sQvq_-CTE;sg>G-|sn=KPIP_tN4U9~1&0yJN_>92%0creItq{(uLT#kCl?j7C zJ#X$=F(2L3DiX6ly00Tyag*RTQ8--O(q`w=bGNnoZ=|~dVM8(Krx|4XfUjtF2k)Qa z#*||luP|6&C~Qi<<8x5Kl~>%m36pr7=GD7n$q1yJ|6a17jz-LAj$!Ed=G*X9ecnd9krznx7tm#WIn z%7QKN;OiIL9az6pnE2%8Hh|L(m}NDg>T*nnHst2!9D~+iu2V0Ok~O|HGIJoxsayS- z;_bM-?M0ni%w=Rq9omHO(V!txS{!lSAd$dB+)L1$QQMmNE9*JESw0^0Is&NRI*7IYs=j6TFl#%xYd zK(cAwsmge$ds;2p09kZ$NR(p%BK!Gq+8a{(o68>Hdn8zRs5a`XIvoYZvyvG&*(t@K zcKxB}iaC}Yg4|V&+3V+-$0Y+=Zeu^!s(D&>_!yVojqb*=l|8&a52vQ^Ta^h*(8d`} zO<&Gl! zA`&yFCp6bxP0PgNOUE(`azxig1}G`jD3sF+^?X;$@3i(Sw51- z5^gJ{+8wOa%l`hEmB*NtR~2s5Dwr5rr``>MoFS)VGheT4{TE?4GTzr03+{)YIR!L@ z9xkz_aFVvWeQCZxin8LDQ_DYX?xGiKzSsvAuDbio$#J;rc73hsLhd@=mfIh@x-(1r zLM=yB7dt=2FtJSWth*)8QtAb5uTIRlkdH68T~J|VH}u{MWkPBvCtXZF@ZFQc!0A5D7wq?r*s6~B)0>xAa0HC1j!kwmKa&e#ASbX>;Z|F=X9rYT$oXfJI(SX8 z7GqoDAkIBNBy#P|0H zic8{d_y6veTCZlT-oG|Km!i`D#mzh-n6)MaXg%-(3Xm<~*sW*m0&nV=(yNUU^3!f| ze1}0ZEv{c%Qb0$}-6zom#P;7v)W9EnBgvyZ-tJrrLAKuYX4>WTm`#8U1jsc$dk8y$8!WgBCJ@{DTfP}Q`b9v zW68veNVDaaY|{VS$DW8Jd`$%F7accw^QgpmJBBSYq*AGJMtQveqiP@DspVAc5$LX@ z089`eQ#PJPmRcds6Vvg*6XaOHn3uo1Ndl`i)KCfyC_}M^z*~42w&haQ#U`jyZE~wdsc=@;hlA#d9(1)NRwY+NsAGP6O zECG_q^IumZhD&y)1?`Homy_xAAiVP&=K2o^yA>}*+5(ZW0F5(R)4L^st3MC!)~Mcl zbNF4V+NfmRz-&Ou$j=WBJSVDB5wB+F>cIwXvGEP?en?*_t3{DteB5D7y^RpypdAe) z+_%7MmzZk>p$7<=KdVm0kKwK?XwLjMn*K9>BpT080pgHZbI_S~$yC#ROO?VLymha- zK6HjHNMud}RLmXn(Yr0f7_}+U4o@#Ak;Mf}YhebtUmr%-!#t|C_96xI97M~Npl$)> zht_skd;-P2hpWCZ)2|%kqdK3h<%Y4}mbUQ!}Y zfD$2$Ss-JKISSIw7+@UIjzaxVtxx6Wp600+Hqki&QQ}2Vb{jEicRrC9M1Y&6L9x7M zNW1%2uE_)K+N?NpFCYTxY)2XEWOo2}*H|S++dxa>#q2-$w(*_@yTt05uN(zKvW1MW z`XaAXY&;t1B9!^oBH)8c|3|c+(cAC3i!luCbViqI+X$o|u#=UgzWhzMo7%l>dZ+y9 l|E|UTEmZxtbBvD{VQ#D$e-LlP?gk} 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 EA9%+^H2?qr literal 0 HcmV?d00001 diff --git a/docs/_static/examples/CanvasEvent/design1.png b/docs/_static/examples/CanvasEvent/design1.png new file mode 100644 index 0000000000000000000000000000000000000000..bd103c37bd23046b82b0d6b6ac37bf50953ae792 GIT binary patch literal 13452 zcmeHOdsLFy+NY_;nns4K?9X5$4E#tcmqu$-jwR_P0QK`aXtR3t?d1iu&TJL{}9=dAh8IkV3C{*bj?FKqYT z?{7cvvwzQJKkvmop~03P*?k0oKrDCe_+~Ez^5FsqWMS8m55X4i^*^ozFAE5JgTIEb z+8l8Yko&J>hv}q&)*SkTV zv7y^yd)E#L>k0?`pl?Uz529m(c6Aq3d#`Vbc8$JN{bTppZHix3e0Jy2@%(K+ZkeR{ z>HBr62b3nU7O5xCkao&XQRFSX?nUmR!Fu^jC?+A{XE+EH0@;?I1R^zk9)J3Q`MT}1 z<>o8o>x*;OPrh4Z{*tk0?OemzKY-!@Kc8M(GS^V}&D?d#`u9_miu(Iw**+<2o2i@e zRxlXQ&B5daK_CrlWO_dcB*f81ZAcG+e{k}+91-jaws$palOd2C-zL3YpY#4U36u66 ziQ8IrV;jfCVvQI@>0AwgB*^@YQv-a#LP*1k4z~C1UDQojtIHRMGR!ml$3DNCfcXcW654VzIQxA)cx(PZz$~i41-ay6Q!}J6uV&oVJsVExS zs|2jINy;+k2}N_5ib>H1*D0t*p%&9D9W4``g1Eh~CzP01mvJ0WYS0G{-tjqk?P>-6 z3mdxyR>sq_E{E?a#j}rwbqcJl7>{(1agUauH6#G1VMrKg@eU$akB*(FB*R(B7Mo>pBic zaH0VFzUWz{%8#forfCM!d5X(D0Aw>z3=17yXj)VPn#6lf0O-phrvJH5zTt433g!8y@!weAg9iPGI(Kzf*`Fi$73 zG9k%ue^n`TVnQ*ZPEggAr!1UGEu2zriCBnejHtX!=#*AoJAHN#6fByfc)F2Y&Q2e} zXr2XG!%8~JKq&=KW8ON?mfo;5lp2Rs zS~&4T^jiygr-+ia6Knisy$1M++6ku`-xMAiciF^ptwF>%-%mWunG}4FGK}(d9fCC8 zbf=5<#V*ZBLiwhO=m>n7D-&O~%i7A30PaQ*J)!*pilwazDP~g)N@BBXO{ZgW@A1wP zrf*__Q6rPt+?L?rY%#NLl*_#FMdaQ*Pb}lIy;lSXA6FAi3oY@)_3k${uHSW|la|~U z$wR6#LoGcDDbv-nwN+$oJ7wQG9@4<1+m$Z!YlOPJ`xe;2UWI^G`Hn)UGjMgA9}dXbmrm*U!#G{gv#{q~TiT;zV{dsLd$}ij>$@GMc245Z3s5<(8Uvu5 z4=pT&`4|xTO9$Vlb+gK4ocR9J47)PBJ``tG!$7jpu_S}c;;ZA`|b zl~xgGq)Rl7UJQoUUP2p2ES*st3dSa{HEo7;qq?bIqwTyAmY$F(8BYdOZ2nKkVM1La z-0~O$CaC5Y_)n>lJw;|64*5P!J6gd@(|TUW#x!NFfyOmu%Er#7^q;a&WciJjMphkm zmd^|RQdp$rs)~td1)dAgt8ZN-N5=1G3LzONJ-;ONuHsI8vJuv;`zL7Mn zhn>TH-~KM?{h7htVX}s$`Wk7~PXU?-jg5HUTFQ?-078Ib;%g@wcAuwIhy>{#cIJl^ za>zPhDmHy+7s}Uz*Q$1inSByQzKatWCS{7H$33@a_`crIuyEl*O;VjA;)98$5+I;{U!HMXN1D{7SuM)2;|UtDVz|F?50+F` z>0`p#u!5khs1Y?<2gX?YPwerZ8EX_GtXKk#C^|1}%K=|n=5fTY zM;eJ^b>k*T>)jf*G=Pb_|3gIj1fz>MaQy-`8wstGwH8FQ3q)lR$+Lqt#A30Ya^l3M z&wW_bg7R7YF+j7-UNALV)~ujuj`7A`KW{Y4IlMJeBh3EW@-pqpOdVMdNuKvOJkwg5zmK-FFW) z7v?R_&dl_1_8r>b@j(l%i`AZf1P7#6F@gI_$C&s;W)G7DQfA+3r!rn6uiLAaX^V1X z)d?mIq@o_C;xhlMiU@$Fs_P#+(|$`BNC}rDb}VncqO~xi&3R4YA*Ia+xs%-(Oh@r< z&Vk1BMK?eZ10c+v-jfd}NW7p0{r$T$RQCt6?3|ofexvsXp0%E~KA-V~OwR=|C8qIo zZ34yh!Lxd;g6ed#45=%*!Z4&U zJ4S)WnLe6Js{9CNvam(gL0>Kgb-DUj>iFv$W_a69M=$~Hmp5_uU!9MtJ#okt#jhXb z>qoiz(K^iZySJPZZ=Z5sowv`;3;XjK!7xfdPRI7u*W&ooG84&wToa_-x&J-ga8k!* zQ3A5z`)ofO6Yi)YuZ2d9bxYao` zMzcwrG!(O2k`5fzpr`8TrP{VG`0P-lE%0~^YdvwuLW$y6Db(07Pq7(zf|d8`fPz%n z&8Yembs;2S%(!SINxx^w{`!>T{^Kp~!TzHmInS1W>Vdo5w_@sia!Waz{JMhks<>98 zl7x}3C z1LZoPB58!~$wYUj5?iA!6nr{85@UkIdhMZh}{(m4TAyo#m+gM z`5WK6YCA8R9}J}732o)_SkQ#~%(-&;#oI5ff?jBP^U`M3oYNd$@QOjjT@t`g*PEQjTD#(VphW_DYY7<8uGX4jB*>DQBhPQkp5=se zEpgkrHAbrM(<&

6q3$FLpQ97W&_D;K(FZA7Zm$<^*p9i?=a{3H=U)w%`n!U$Q9Q zhoHE9X%m`tdbPQWPQfHTSx@zV)0VUNr>+uKT7!3Sb84GjGS*9I2LLz<0eT#@AN`P6 zC(%vT2oO|6QX~PmL(o{}=QC5l&Kc@2k;`Mhqd&5N><|wnw&kLFReij=O|@_Sk{d|j zLm+J^o9+}pmi z#hUBccs8ykEv1WFUVEToFcJNz=<=(M6CbsAY007MOU86Q$rI`2^u@w3sowW`{$kZe z(+v2vA7nnsiXy1Ej6>1Ni`U@}JVlc}+o`9LSKxcXkTR(E(M#GlqTkv`6akfY?V@S4 ztZ7}zOH6FOCav6AHFYz@FsfYPSDZb~53MxQ+b25~t-h-2?C8mji!Um>OHbeyzo-nj zK4}WOGs;52f7)Z7++{>1<7r12>R@;xqbe4LWip7DtXrnjkFYZ1S}giq!jFh03MYDh6N6$vPgQ zkIC8;Ks8ClV6&iUut{Gdy4xMWT;-r&Bp&pXC~zpmGA6o9w2(lSQU(T}22*ObI8TY9 zs&VSPFdQ}-w#;+$8j0-UbvmPQG++l5VN0IBSl>>>Q-)4Ry8xKvCOz^!BMI3 zmP-5fjT55szQ{EO(PKY;MVc}@8O2M8uFy$jk-wbdkPORv`lfD1@qR{2WU{1uTBv-# zbF+Fc=a|xl_~sSq(Nh<+@-Bm@Ef`i6wDEN@x)>92OoT1+-VHB5`TE)BjNmYt;{df> zNSs(6{D?c>d(3dv#p;$HHB%%=N-SLdm}<+7~YAL5jEWf23aeOkiZ z-6H*oN2f8lL1)*r$EDxSrmB0z7yAiI!O?ESi;w|DldeS(Ku)cT+byZXC5{dkmAuUP zB7IbTFz*-bA>m|6ZqPS&^tkjBSyXkG__%y-%<@7A zlNFt_!~3OFo7PBvQ8oEcG;nwQ1$mfD1VyOZpG7S}>+?JV`l<~>c$Dy|{0|_C{+K_3 z`?!d6yXy9qz!Vrr39H!5sQWti;NE<~SCDkKQ=x1<6;g&YI9sjYK!wd zXK;x3+7ubV!NMH*LODnTlGnbkJYF04o74G5`@kyhDjcZSc3v@#>1`dnS6{|c!@Wh> zgqeJu`ff#ptG5pCMCn;ad&tjnr|$xRWDv4J#Z#iyr|b_pMXd^iF>Aa^TJBelO1b6L z6;W>7)*pj|h1G14?O2novq0icBsf%RrV_O2-8-?ePl5^dYYuG>cMCp z%FYKXwCO|R8dT-ofsCBl19By^8ivF`rMgHdoC#BGb96Fs684+EBLTH_8 zN4SSLnw%a_O&xonWll!<9d-^5!%z!7)Wf6GA=jhbUmL@d`>T#x1?A((<9WpCw^XkS zF0}UE1Ad|y__7E@hkPle4Hn-VZwoFhCwG-=RHuWT4g7tU?C+TZ@9m&w-{y{*9q5J? zzhh1gyxZWeItdF`)8p`A)`NIcqS8D1&ya1X;xIb0E@=d9wNNdculJXx&Z{Q2{_ zL04txY>}mO;}D${TGA1-cnep8^EXU%m?Z>S^~T0V&CGba7>r(+V*7E5<0s6Hp-ynj zesI=Q%a1?yfSU~N1orvu?X87dZr)wq?>wt^R=VO-cOg!yAGN|hi38ziz)VUfm=nlj zf}J55u>&g?6b~nEE8g(Oo1bqtH>uqYu@`+7e)W@$TxQCQf}i|z$keyjWqUH`T*hCn zn_D6OLi+Xpj^-a`aObCh{56|BFN=9ufP3**ryTQoF|QZ%dSS9s|IX3beikZf->D`EKp?+ezwj%*V1NnZml&&p$M4=YgLMTk&cP>tkv+SX`0AXk=LPem-phFJ zo^EU{{2V(jYi%uLFrw;`u!K^49QP0Xm;6+|=(+T7s5FI6aSor0KOk*nb5!!Tkn9(F z-QVJ7nzEs@zp23``RVfh9YH}s;LPvK19I$MtZlgRK9=lQV4nB)DBAedqW}52kNGL) zc^1^%c~5!XBLdanU*Oq!%K3N7?&j%to_^=)7nHy}{m#>`Ne%wf=klg|LgpD9tVNhN zMgQ+j(fgQo67%bFrTMd`ztLb*m2g_?1G1&1C3G&<|FjRR3(5;}xo6G-EOm{#R|;0y zz7OT|Z-aGDV%y|C7z|dyP{05-`ADL~d8X@CC4+&wDKKVkhrEy48&(seid^)8hGno_ zfo|LxQSi4y-wK)Ns_Ghh(SH8PR6;5GW9pY6rP!!asGsSLV6AzH{PD&Gn{vL_JjXB& zhq2Kd22u*waPSd^6xCq00l72*d@BMYW?`)~*uV3Jg*V-Jj*%UM&|DWVx;0@i>FjZ! zN#Nk9pV;hC6Hu!*8Uu>o7pTd(D8n9Lvw)3mYhm<|tI@Ak7Byo7{d^~zRemSw8SaNd zIu<~cjqDZ_C5pPvgtF267RPGvtq=B)iqE`3zNOejL2}|zKpF*|DDgs;=R$dkt7l;L zv$xSwcSE`b{m&{D>-}l$mZ>v=OkI(nO!r&~vo;(8svV1(gD8=jMt@kek(8L{eiU4h zL-Ua7)H3#mDU&#C1|FkEP;NyETWL6yK!UO1oMZ|B7ksY?!)M}pRP1S&*LwZu!6se? z&%4ErnGjk8tOl-$b}r)%8H$wEGekgT*y$K0#xKfQQoPW7HlMLYG0BL6l3q{-P??(q zT9*rA+R^`o8J<{QmX;+CK`j02>HP1Ih0)9|X!(g&^ys&{{coL BLuUX0 literal 0 HcmV?d00001 diff --git a/docs/_static/examples/CanvasEvent/eventpanefilled.png b/docs/_static/examples/CanvasEvent/eventpanefilled.png new file mode 100644 index 0000000000000000000000000000000000000000..3de6e81abe461011c8584932360da6ec396dbc88 GIT binary patch literal 9154 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 IS>t#A4+lcILI3~& literal 0 HcmV?d00001 diff --git a/docs/examples/CanvasEvents.rst b/docs/examples/CanvasEvents.rst new file mode 100644 index 0000000..c748620 --- /dev/null +++ b/docs/examples/CanvasEvents.rst @@ -0,0 +1,307 @@ +.. CanvasEvents: + +Creating a Canvas and using events to draw dots +*********************************************** + +Setting up +=========== + +We are going to build a simple application. It will create a GUI with +a large py:tkinter.canvas +Using the an event defined in formation-studio, dots will be drawn onto the Canvas +With one of the two buttons on the GUI, a simple "falling motion" of the dots will be simulated +Assuming you already have formation studio installed on your machine +(if not, see :ref:`installation` instructions) fire up the studio in the terminal as shown below. + +.. code-block:: bash + + formation-studio + +Creating the design +==================== + +A blank design will open up assuming you are using default settings. On the +**components** pane on the top left, select ``legacy`` on the drop down menu +to use classic tkinter widgets and not themed ``ttk`` widgets. This will allow +us to customize more attributes. +On the vertical tab on the left, select ``widget`` and drag two times a ``Button`` to the design pad. + +.. figure:: ../_static/examples/CanvasEvent/Components.png + :height: 150px + :align: center + +`Button` is located in the ``widget`` section. `Canvas` is located in the ``container`` section. + +.. figure:: ../_static/examples/CanvasEvent/Components2.png + :height: 200px + :align: center + + +In the ``style pane``, while the ``canvas`` is selected, make some adjustments: + +.. figure:: ../_static/examples/CanvasEvent/StylePaneCanvas.png + :height: 300px + :align: center + +Set the size of the `Canvas` to Height=800 and Width=1400. Adjust the size of the application window if required. +Change the ID to ``Canvas1``, that is important to reference it in the python application. + +If needed, change the background color of the ``Canvas`` to make it clearly visible + +.. note:: + To **move** a widget around in the editor you will need to hold the `shift` key down when + dragging. Alternatively you can move the cursor to the edges of the widget after + selecting it and drag when the "hand" cursor appears. + To **resize** a widget, drag the small squares at the edges and corners + + + +When selecting one of the 2 `Button` widgets, make the following adjustments in the Style Pane: + +.. figure:: ../_static/examples/CanvasEvent/StylePaneButton1.png + :height: 150px + :align: center + +Change it text to ``Start simulation``, and change its command to ``comm_start`` +Repeat this for the other button, changing its text to ``Stop Simulation`` and its command to ``comm_stop`` + +The total design should look like: + +.. figure:: ../_static/examples/CanvasEvent/design1.png + :width: 100% + :align: center + +Next, we are going to create an `event`. This `event` is triggered when Mouse Button 1 is pressed inside the Canvas. +Go to the Event-pane on the left of Formation Stuidio. +If it is not open yet, click the `Event Pane` text on the far left-top + +.. figure:: ../_static/examples/CanvasEvent/openeventpane.png + :height: 150px + :align: center + +The `Event Pane` opens below the `Style Pane`, and looks like this: + +.. figure:: ../_static/examples/CanvasEvent/eventpane.png + :height: 150px + :align: center + +Make sure you have selected the ``Canvas`` in the design window. +The `Events` that are added in the `Event Pane` are related to the selected design item in the main window. +Each `Event` consists of 2 items, the ``sequence`` and the ``handler``. +The ``sequence`` is about the possible user interactions that can occur. + +A partial list of possible `events`, and their meaning, is below. These are TKinter specific, +more documentation on these `events` can be found on the Tkinter documentation. + +* **, , ** + * Button 1 is the leftmost button, button 2 is the middle button(where available), and button 3 the rightmost button. These events are related to the correseponing pressing of the mouse buttons + +* **** + * The mouse is moved, with mouse button 1 being held down (use B2 for the middle button, B3 for the right button). + +* **** + * Button 1 was released. This is probably a better choice in most cases than the Button event, because if the user accidentally presses the button, they can move the mouse off the widget to avoid setting off the event. +* **** + * The mouse pointer entered the widget (this event doesn't mean that the user pressed the Enter key!). +* **** + * The mouse pointer left the widget. +* **a** + * The user typed an "a". Most printable characters can be used as is. The exceptions are space () and less than (). Note that 1 is a keyboard binding, while <1> is a button binding. + + + +Connecting Events +===================== + +For this example, we will connect a function to a **** event for our ``Canvas1``. +The name of the function we will assign is ``paint``. +In the ``Event Pane``, use the small green (plus) to add a `Sequence` and a `Handler`. +For `Sequence` fill in **** (including the smaller-than and larger-than characters). +For 'Handler' fill in **paint**. This is the name of the function that a **** event will triggered. + +The ``Event Pane`` should look like this: + +.. figure:: ../_static/examples/CanvasEvent/eventpanefilled.png + :height: 150px + :align: center + + + + +Wrapping up the design +====================== + +Save the design in `formation-studio` in a filename called: ``Canvas_example.json`` by doing any of the following + +* Go to main menu ``File > Save`` +* Press ``Ctrl+S`` +* Click on the "Floppy disk" icon in the tool bar + + +Writing the code +================= + +In the same folder where ``Canvas_example.json`` is saved, create a python file +named ``Canvass_example.py``. + +To load our design file we will need to import formation loaders and load ``Canvas_example.json`` as shown below. +We will use :py:class:`~formation.loader.AppBuilder` which will create a toplevel window for us. +We also need to use the :py:class:`Threading` module, to control the animation that will be created + + +.. code-block:: python + + from formation import AppBuilder + import Threading + + app = AppBuilder(path="Canvas_example.json") + app.connect_callbacks(globals()) + + +First we need to define a number of variables. This is possible in `formation-studio`, but we need some specific type of variables. + +.. code-block:: python + + app.listofdots=[] ### an empty list for the dots + app.stop_event = threading.Event() ## a stop-Event + +The ``listofdots`` variable is of type `list`. It is created as part of the ``class`` `app`, which makes it basically a global variable. +The ``stop_event`` variable is of the type `Event` from the :py:class:`Threading`. By making this part of the ``class`` `app` it is also a global variable. + +Now, we need to define 3 functions, one for each of the two ``Buttons`` and one for the **** event that was defined on the Canvas1. +First, the ``start button``: + +.. code-block:: python + + def comm_start(): + app.stop_event.clear() + app.move_thread = threading.Thread(target=dotsfall) + app.move_thread.start() + return + +The ``start button`` command does 3 things: + +#. Clear the `stop_evet`, just in case it was already stopped +#. Create a Thread, referring to a function called ``dotsfall`` +#. Start the Thread that was just created + +.. note:: + Tkinter, and with that also Formation.Appbuilder and Formation-studio are event-driven applications. To have a continuous + flow or execution of a certain funcion, ``Threading`` is required. If a much mode simple :py:class: `while` loop is used, the + rest of the application will get into lockout and become unresponsive until the `while` loop ends + +The ``stop button`` function looks like this: + +.. code-block:: python + + def comm_stop(): + app.stop_event.set() + return + +It does only one thing, which is raising the stop_event flag. + +Next is the ``paint`` function, which is linked to the **** event on the Canvas: + +.. code-block:: python + + def paint(event): + python_green = "#476042" + x1, y1 = (event.x - 1), (event.y - 1) + x2, y2 = (event.x + 1), (event.y + 1) + ID=app.Canvas1.create_oval(x1, y1, x2, y2, fill=python_green) + app.listofdots.append([ID,1]) + return + +The ``paint`` function is called, and the `event`-variable is included in the function call. +Within the function, a couple of things happen: + +#. we define a color, called ``python_green`` +#. Two coordinates (x1 and y1) for the top-left position of the dot that will be drawn are determined. This is just 1 pixel left and 1 pixel above the coordinates where the user is clicking in the ``Canvas`` +#. Two coordinates (x2 and y2) for the bottom-right position of the dot, just 1 pixel right and 1 pixel below the mouse-click +#. Create a circle (`Tkinter.Canvas.Create_oval`)m with given 2 sets of coordinates (x1, y1, x2 and y2) and the color. This draws a dot approximately 3 pixels wide. +#. A list is created consisting of the `ID`-identifier of the Oval and a ``speed`` indicator (=1). This 2-item list is added to the `app.listofdots`-list. + +The list `app.listofdots` is used to control the movement of the dots using the `dotsfall`-function. + +.. note:: + When drawing on a `Tkinter.Canvas`, it is up to the creator of the application whether or not + the item that has been drawn needs to be referenced again. + Both of the following implementations are correct: + + #. ID=app.Canvas1.create_oval(x1, y1, x2, y2, fill=python_green) + #. app.Canvas1.create_oval(x1, y1, x2, y2, fill=python_green) + + In the first, the `ID`-identifier can (and in this example will) be used to reference the circle again. In the second implementation this is + impossible, but in many cases also not required. + +The `dotsfall`-function is the last to be defined. It is quite complex, so lets take it step by step. +The following is the minimal-working function, although its effects are not entirely what we want. + +.. code-block:: python + + def dotsfall(): + while not app.stop_event.is_set(): + for j in app.listofdots: + ID=j[0] + speed=j[1] + app.Canvas1.move(ID,0,speed) + speed+=1 + app._root.after(50) + app._root.update() + return + +The follwing is happening: + +#. A `while`-loop is created, which runs as long as the `app.stop_event` is not `set`. +#. Within the `while`-loop, there is a `for`-loop, going over the `app.listofdots` +#. Within the `for` loop, the `ID` of each Circle and the `speed` of each oval is read from the list +#. The corresponding `Canvas1` item, the circles, are moved in Y+ direction (down) +#. The speed is increased by one. +#. After moving all objects on the `Canvas1`, the Threading event are temporarily stopped for 50ms, so that the GUI can be updated. Using `app._root` it is possible to directly address `TKinter` methods and functions +#. After the `while` loop, the total GUI is forced to be updated using `app._root.update()` + +Some additional things need to happen during this function: + +#. The `app.listofdots` list needs to be updated after movement. For this, a temporary, local second list is introducted: `listofdots2` +#. In case of a large number of dots, the `stop_event` needs to break the `for`-loop +#. In case of a large number of dots, the `app._root.after()` needs to be shorter to keep the movement even. + +The updated, total function looks like this: + +.. code-block:: python + + def dotsfall(): + listofdots2=[] + while not app.stop_event.is_set(): ## continue movement until stop_event + for j in app.listofdots: + if app.stop_event.is_set(): + break + ID=j[0] + speed=j[1] + app.Canvas1.move(ID,0,speed) + speed+=1 + if app.Canvas1.coords(ID)[1]<800: + listofdots2.append([ID,speed]) + app.listofdots=listofdots2 + if len(app.listofdots)>100: + waittime=int(max(10,100-(len(app.listofdots)/2))) + app._root.after(waittime) + else: + app._root.after(50) + app._root.update() + return + +Wrapping it up +"""""""""""""""" + +You can download the full code below, of both the python code and the json-design file: + +:download:`calculator.py ` + +:download:`calculator.xml ` + + +Conclusion +============ + +This was a simple example to show how events are linked to items in the GUI in `formation studio`. diff --git a/docs/index.rst b/docs/index.rst index 9ab5c19..4c7a926 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -24,6 +24,7 @@ Formation studio :caption: Examples: examples/calculator + examples/CanvasEvents .. toctree:: :maxdepth: 1 diff --git a/examples/CanvasEvents/Canvas_example.json b/examples/CanvasEvents/Canvas_example.json new file mode 100644 index 0000000..9f0684c --- /dev/null +++ b/examples/CanvasEvents/Canvas_example.json @@ -0,0 +1,113 @@ +{ + "attrib": { + "attr": { + "layout": "place" + }, + "layout": { + "height": 956, + "width": 1504, + "x": 30, + "y": 30 + }, + "name": "tk_1" + }, + "children": [ + { + "attrib": { + "name": "title" + }, + "children": [ + { + "attrib": { + "value": "title" + }, + "type": "arg" + } + ], + "type": "meth" + }, + { + "attrib": { + "name": "geometry" + }, + "children": [ + { + "attrib": { + "value": "1504x915+0+0" + }, + "type": "arg" + } + ], + "type": "meth" + }, + { + "attrib": { + "major": "8", + "minor": "16", + "name": "version" + }, + "type": "meta" + }, + { + "attrib": { + "attr": { + "command": "comm_start", + "text": "Start Simulation" + }, + "layout": { + "bordermode": "outside", + "height": "58", + "width": "190", + "x": 30, + "y": 20 + }, + "name": "button_1" + }, + "type": "tkinter.ttk.Button" + }, + { + "attrib": { + "attr": { + "command": "comm_stop", + "text": "Stop Simulation" + }, + "layout": { + "bordermode": "outside", + "height": "53", + "width": "208", + "x": 251, + "y": 22 + }, + "name": "button_2" + }, + "type": "tkinter.ttk.Button" + }, + { + "attrib": { + "attr": { + "background": "#ffffff" + }, + "layout": { + "bordermode": "outside", + "height": "800", + "width": "1400", + "x": 51, + "y": 89 + }, + "name": "Canvas1" + }, + "children": [ + { + "attrib": { + "add": "False", + "handler": "paint", + "sequence": "" + }, + "type": "event" + } + ], + "type": "tkinter.Canvas" + } + ], + "type": "tkinter.Tk" +} \ No newline at end of file diff --git a/examples/CanvasEvents/Canvas_example.py b/examples/CanvasEvents/Canvas_example.py new file mode 100644 index 0000000..7ed4b4b --- /dev/null +++ b/examples/CanvasEvents/Canvas_example.py @@ -0,0 +1,66 @@ +############################################################################################## +## Example written by PaulEcomaker: https://github.com/PaulEcomaker ## +## Example made using Formation Studio by Emmanuel Obara: https://github.com/ObaraEmmanuel ## +############################################################################################## + + +from formation import AppBuilder +import threading + +def comm_start(): + app.stop_event.clear() ## clear the stop_event, just in case it is_set + app.move_thread = threading.Thread(target=dotsfall) ### create the thread for the movement of the dots + app.move_thread.start() ## start the thread of the movement. + + return + +def dotsfall(): + listofdots2=[] ### make a temporary second list of dots + while not app.stop_event.is_set(): ## continue movement until stop_event + for j in app.listofdots: ### go over the list of dots + if app.stop_event.is_set(): + break + ID=j[0] ## per dot read the ID + speed=j[1] ### per dot, read the speed + app.Canvas1.move(ID,0,speed) ### move the dot speed in Y+ direction + speed+=1 ### increase the speed with 1 + if app.Canvas1.coords(ID)[1]<800: ### if the current y-coordinate of the dot is definitely higher than the bottom of the Canvas + listofdots2.append([ID,speed]) ## add the ID and the new speed to the 2nd list-of-dots + app.listofdots=listofdots2 ### after the for-loop: copy the 2nd list into the first + if len(app.listofdots)>100: ## this determines the update speed of the canvas after 1 for-loop + waittime=int(max(10,100-(len(app.listofdots)/2))) ### in case there are a lot of dots, update time is somewhere between 10 and 50 + app._root.after(waittime) ## wait shorter if there are lost of dots + else: + app._root.after(50) ### wait 50 ms so that movement is time limited + # Ensure final update of canvas if needed + app._root.update() + return + + +def comm_stop(): + app.stop_event.set() ## just raise the stop_event flag when the button is pressed + return + +def paint(event): + python_green = "#476042" + x1, y1 = (event.x - 1), (event.y - 1) ## determine x-y coordinates (-1) is the left mouse-button is pressed + x2, y2 = (event.x + 1), (event.y + 1) ### the same, but (+1) + ID=app.Canvas1.create_oval(x1, y1, x2, y2, fill=python_green) ## draw a dot (oval) + app.listofdots.append([ID,1]) ## location of the dots (x1,y1,x2,y2) and initial speed when simulation starts + return + +def eraser(): + pass + return + + +### build the app +app = AppBuilder(path="Canvas_example.json") +app.connect_callbacks(globals()) + +## determine some "global"-variables. +app.listofdots=[] ### an empty list for the dots +app.stop_event = threading.Event() ## a stop-Event + +## run the app +app.mainloop() From 02ca0967af018cb7c8754e2e1743b188710c5538 Mon Sep 17 00:00:00 2001 From: PaulEcomaker Date: Wed, 6 Aug 2025 13:06:58 +0200 Subject: [PATCH 2/2] Changes made as proposed .after command changed to time.sleep, importing of sleep-command added --- docs/examples/CanvasEvents.rst | 8 +++++--- examples/CanvasEvents/Canvas_example.py | 7 ++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/docs/examples/CanvasEvents.rst b/docs/examples/CanvasEvents.rst index c748620..963df02 100644 --- a/docs/examples/CanvasEvents.rst +++ b/docs/examples/CanvasEvents.rst @@ -147,11 +147,13 @@ named ``Canvass_example.py``. To load our design file we will need to import formation loaders and load ``Canvas_example.json`` as shown below. We will use :py:class:`~formation.loader.AppBuilder` which will create a toplevel window for us. We also need to use the :py:class:`Threading` module, to control the animation that will be created +We also need the :py:class:'sleep' from the time-module. .. code-block:: python from formation import AppBuilder + from time import sleep import Threading app = AppBuilder(path="Canvas_example.json") @@ -284,10 +286,10 @@ The updated, total function looks like this: listofdots2.append([ID,speed]) app.listofdots=listofdots2 if len(app.listofdots)>100: - waittime=int(max(10,100-(len(app.listofdots)/2))) - app._root.after(waittime) + waittime=int(max(10,100-(len(app.listofdots)/2/1000))) + time.sleep(waittime) else: - app._root.after(50) + time.sleep(0.050) app._root.update() return diff --git a/examples/CanvasEvents/Canvas_example.py b/examples/CanvasEvents/Canvas_example.py index 7ed4b4b..14c1600 100644 --- a/examples/CanvasEvents/Canvas_example.py +++ b/examples/CanvasEvents/Canvas_example.py @@ -5,6 +5,7 @@ from formation import AppBuilder +from time import sleep import threading def comm_start(): @@ -28,10 +29,10 @@ def dotsfall(): listofdots2.append([ID,speed]) ## add the ID and the new speed to the 2nd list-of-dots app.listofdots=listofdots2 ### after the for-loop: copy the 2nd list into the first if len(app.listofdots)>100: ## this determines the update speed of the canvas after 1 for-loop - waittime=int(max(10,100-(len(app.listofdots)/2))) ### in case there are a lot of dots, update time is somewhere between 10 and 50 - app._root.after(waittime) ## wait shorter if there are lost of dots + waittime=int(max(10,100-(len(app.listofdots)/2/1000))) ### in case there are a lot of dots, update time is somewhere between 10 and 50 ms + sleep(waittime) ## wait shorter if there are lost of dots else: - app._root.after(50) ### wait 50 ms so that movement is time limited + sleep(0.05) ### wait 50 ms so that movement is time limited # Ensure final update of canvas if needed app._root.update() return