You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(116) |
Sep
(146) |
Oct
(78) |
Nov
(69) |
Dec
(70) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(188) |
Feb
(142) |
Mar
(143) |
Apr
(131) |
May
(97) |
Jun
(221) |
Jul
(127) |
Aug
(89) |
Sep
(83) |
Oct
(66) |
Nov
(47) |
Dec
(70) |
2003 |
Jan
(77) |
Feb
(91) |
Mar
(103) |
Apr
(98) |
May
(134) |
Jun
(47) |
Jul
(74) |
Aug
(71) |
Sep
(48) |
Oct
(23) |
Nov
(37) |
Dec
(13) |
2004 |
Jan
(24) |
Feb
(15) |
Mar
(52) |
Apr
(119) |
May
(49) |
Jun
(41) |
Jul
(34) |
Aug
(91) |
Sep
(169) |
Oct
(38) |
Nov
(32) |
Dec
(47) |
2005 |
Jan
(61) |
Feb
(47) |
Mar
(101) |
Apr
(130) |
May
(51) |
Jun
(65) |
Jul
(71) |
Aug
(96) |
Sep
(28) |
Oct
(20) |
Nov
(39) |
Dec
(62) |
2006 |
Jan
(13) |
Feb
(19) |
Mar
(18) |
Apr
(34) |
May
(39) |
Jun
(50) |
Jul
(63) |
Aug
(18) |
Sep
(37) |
Oct
(14) |
Nov
(56) |
Dec
(32) |
2007 |
Jan
(30) |
Feb
(13) |
Mar
(25) |
Apr
(3) |
May
(15) |
Jun
(42) |
Jul
(5) |
Aug
(17) |
Sep
(6) |
Oct
(25) |
Nov
(49) |
Dec
(10) |
2008 |
Jan
(12) |
Feb
|
Mar
(17) |
Apr
(18) |
May
(12) |
Jun
(2) |
Jul
(2) |
Aug
(6) |
Sep
(4) |
Oct
(15) |
Nov
(45) |
Dec
(9) |
2009 |
Jan
(1) |
Feb
(3) |
Mar
(18) |
Apr
(8) |
May
(3) |
Jun
|
Jul
(13) |
Aug
(2) |
Sep
(1) |
Oct
(9) |
Nov
(13) |
Dec
|
2010 |
Jan
(2) |
Feb
(3) |
Mar
(9) |
Apr
(10) |
May
|
Jun
(1) |
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
(1) |
Dec
(4) |
2011 |
Jan
|
Feb
|
Mar
(10) |
Apr
(44) |
May
(9) |
Jun
(22) |
Jul
(2) |
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
2012 |
Jan
|
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
|
Jun
(5) |
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
(2) |
Apr
(1) |
May
(1) |
Jun
|
Jul
(3) |
Aug
(8) |
Sep
(3) |
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: John H. <ec...@ya...> - 2011-04-20 18:24:24
|
It sounds like you don't have the entire mod. When you start the new project wizard, does it ask you what FrameClass to generate? If not, you are still using the original layouteditor. Sorry for not having any documentations, I am waiting for things to stabilize a bit...(too many things working on) -- John Henry > >From: Teuvo Eloranta <te...@gm...> >To: John Henry <kim...@ya...> >Cc: pyt...@li...; "Wagner, John" <ja...@me...> >Sent: Wed, April 20, 2011 10:49:22 AM >Subject: Re: [Pythoncard-users] Action Editor > >Maybe it's somehow about the environment? > >For my PCLinuxOS the action editor button does not appear either. >But in Windows Vista is it there. >In vista I recall it generating some actionbindings... which I've never used in >my projects. >(Also in my PCLOS the new project wizard generates only two files; .py and >rsrc.py files.) > >I have the following env for python 2.6.6 in my up-to-date PCLOS: > >... python2.6/site-packages/wx-2.8-gtk2-unicode/wxPython-2.8.10.1-py2.6.egg-info > >If this is of any help.. > >-Teuvo > > > >2011/4/20 John Henry <ec...@ya...> > >It's a button on the resourceEditor. If you start up the layoutEditor, the >>resource editor should pop up. You should see the ActionEditor. >> >>The code stub is created when you start a new project. For instance, if your >>project is MyProject, you should end up with 3 files: MyProject.py, >>MyProject.,rsrc.py and MyProject_rsrc.py >> >>Do you have all 3 files? >> -- >>John Henry >> >> >> >>----- Original Message ---- >>> From: "Wagner, John" <ja...@me...> >>> To: "pyt...@li..." >>><pyt...@li...> >>> Sent: Wed, April 20, 2011 9:39:10 AM >>> Subject: [Pythoncard-users] Action Editor >> >>> >>> The Action Editor sounds like a very useful modification to the Property >>>Editor, but I can't get it to show up. I took the files and copied them into >>>the appropriate pythoncard directories but the ActionEditor button doesn't >>show >>>up, and no action stub code is generated. >>> >>> >>> Is there something else that needs to be configured in order to make the >>>action editor appear? >>> >>> >>> Thanks, >>> John Wagner >> |
From: John H. <ec...@ya...> - 2011-04-20 17:53:44
|
Glad you like it. As an engineer, I always wished that I can do this kind of graphs. My GUI programming skill is restricted to Pythoncard only. Now, the door is wide open for me. The example I am working on is even more impressive. Now that I know how to have multiple panels in one Window, I want to show how to do multiple dynamic curves in a window! -- John Henry ----- Original Message ---- > From: "Wagner, John" <ja...@me...> > To: "pyt...@li..." ><pyt...@li...> > Sent: Wed, April 20, 2011 9:37:30 AM > Subject: [Pythoncard-users] Matplotlib widget and Dynamic Graph demo > > The pythoncard dynamic graph and matplotlib widget are wonderful. The >matplotlib widget is a major addition to pythoncard, and the dynamic graph makes >an excellent demo. Thanks for posting it. > > John Wagner > > > > -----Original Message----- > From: pyt...@li... >[mailto:pyt...@li...] > > Sent: Wednesday, April 20, 2011 12:00 AM > To: pyt...@li... > Subject: Pythoncard-users Digest, Vol 40, Issue 10 > > Send Pythoncard-users mailing list submissions to > pyt...@li... > > To subscribe or unsubscribe via the World Wide Web, visit > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > or, via email, send a message with subject or body 'help' to > pyt...@li... > > You can reach the person managing the list at > pyt...@li... > > When replying, please edit your Subject line so it is more specific than "Re: >Contents of Pythoncard-users digest..." > > > Today's Topics: > > 1. Dynamic Graph in Matplotlib/Pythoncard (was Re: Added > Matplotlib FigureCanvas widget to Pythoncard) (John Henry) > 2. Re: Action Editor resurracted (Alec Bennett) > 3. Re: Action Editor resurracted (John Henry) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Sun, 17 Apr 2011 20:54:56 -0700 (PDT) > From: John Henry <ec...@ya...> > Subject: [Pythoncard-users] Dynamic Graph in Matplotlib/Pythoncard > (was Re: Added Matplotlib FigureCanvas widget to Pythoncard) > To: John Henry <kim...@ya...>, > pyt...@li... > Message-ID: <295...@we...> > Content-Type: text/plain; charset="us-ascii" > > I uploaded a port of the 2nd example at >http://eli.thegreenplace.net/2008/08/01/matplotlib-with-wxpython-guis/ for a >dynamic graph (like a moving strip recorder) using the Pythoncard Matplotlib >widget I added. > > >https://sourceforge.net/tracker/?func=detail&aid=3288729&group_id=19015&atid=369015 >5 > > > Have fun! > -- > John Henry > > > > > >From: John Henry <ec...@ya...> > >To: pyt...@li... > >Sent: Wed, April 13, 2011 8:42:52 PM > >Subject: Added Matplotlib FigureCanvas widget to Pythoncard > > > > > >There are still work to be done but for an early (and working) version, > >download > >from: > > > > > >https://sourceforge.net/tracker/?group_id=19015&atid=369015 > > > > > >It might require my earlier submittions (pdfwindow, flashwindow, > >drag-n-drop tree, MDLWindow w Sash)... > > -- > >John Henry > -------------- next part -------------- > An HTML attachment was scrubbed... > > ------------------------------ > > Message: 2 > Date: Mon, 18 Apr 2011 05:34:59 -0700 > From: Alec Bennett <wry...@gm...> > Subject: Re: [Pythoncard-users] Action Editor resurracted > To: John Henry <kim...@ya...> > Cc: pyt...@li... > Message-ID: <BANLkTiksZdQnNx+TYuREFLnn=J0g...@ma...> > Content-Type: text/plain; charset="iso-8859-1" > > Thank you! > > Is there a list of what files have been modified? > > > > On Sat, Apr 16, 2011 at 7:25 PM, John Henry <ec...@ya...> wrote: > > > In 2004, there was a experimentalResourceEditor released with PythonCard. > > To be honest, it wasn't very good (in my humble opinion). However, > > it had one feature that I like a lot - the Action Editor. This is a > > dialog for selecting which action (or methods) to activate for a particular >widget. > > For instance, if you created a button, you can select mouseClick, > > mouseMove, and so forth. It was very nice because now I don't have to > > memorize which widget can do what. I just select that from a list. > > > > It appears the code was never finished - or at least to the degree I > > like to see it. With a later release of layoutEditor (not sure if it > > was later or not but nonetheless, layoutEditor is what I use), this > > feature was dropped - or never included in layoutEditor. > > > > Well, I like the feature so much that I decided to have it resurrected. > > With the package uploaded (need to overlay on top of the existing one > > - do your backup of the entire Pythoncard directory because I did some > > mod to model.py and so forth), you will see a ActionEditor button in > > the Property Editor window and when clicked, brings up the original > > ActionEditor (cleaned up and debugged). > > > > In addition to just setting the actionBinding of the widget, I went a > > little further: it actually generates a code-stub for each of those > > actions > > (!!!) which helps me tremendously. I hope this mod is useful to othres. > > > > BTW: A minor tweak with this version of layoutEditor - when you create > > a new project, you can select which FrameClass to use. The default is > > model.Background, of course. > > > > Have fun with it: > > > > > > https://sourceforge.net/tracker/?func=detail&aid=3288344&group_id=1901 > > 5&atid=369015 > > > > -- > > John Henry > > > > > > > > ---------------------------------------------------------------------- > > -------- Benefiting from Server Virtualization: Beyond Initial > > Workload Consolidation -- Increasing the use of server virtualization > > is a top priority.Virtualization can reduce costs, simplify > > management, and improve application availability and disaster > > protection. Learn more about boosting the value of server > > virtualization. http://p.sf.net/sfu/vmware-sfdev2dev > > _______________________________________________ > > Pythoncard-users mailing list > > Pyt...@li... > > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > > > > > -------------- next part -------------- > An HTML attachment was scrubbed... > > ------------------------------ > > Message: 3 > Date: Tue, 19 Apr 2011 21:00:09 -0700 (PDT) > From: John Henry <ec...@ya...> > Subject: Re: [Pythoncard-users] Action Editor resurracted > To: Alec Bennett <wry...@gm...>, John Henry > <kim...@ya...> > Cc: pyt...@li... > Message-ID: <621...@we...> > Content-Type: text/plain; charset="us-ascii" > > Sorry, don't have that list but should be obvious from the zip file. > -- > John Henry > > > > > >From: Alec Bennett <wry...@gm...> > >To: John Henry <kim...@ya...> > >Cc: pyt...@li... > >Sent: Mon, April 18, 2011 5:34:59 AM > >Subject: Re: [Pythoncard-users] Action Editor resurracted > > > >Thank you! > > > >Is there a list of what files have been modified? > > > > > > > > > >On Sat, Apr 16, 2011 at 7:25 PM, John Henry <ec...@ya...> wrote: > > > >In 2004, there was a experimentalResourceEditor released with > >PythonCard. To be honest, it wasn't very good (in my humble opinion). > >However, it had one feature that I like a lot - the Action Editor. > >This is a dialog for selecting which action (or methods) to activate > >for a particular widget. For instance, if you created a button, you > >can select mouseClick, mouseMove, and so forth. It was very nice > >because now I don't have to memorize which widget can do what. I just select >that from a list. > >> > >> > >>It appears the code was never finished - or at least to the degree I > >>like to see it. With a later release of layoutEditor (not sure if it > >>was later or not but nonetheless, layoutEditor is what I use), this > >>feature was dropped - or never included in layoutEditor. > >> > >> > >>Well, I like the feature so much that I decided to have it > >>resurrected. With the package uploaded (need to overlay on top of the > >>existing one - do your backup of the entire Pythoncard directory > >>because I did some mod to model.py and so forth), you will see a > >>ActionEditor button in the Property Editor window and when clicked, brings >up the original ActionEditor (cleaned up and debugged). > >> > >> > >>In addition to just setting the actionBinding of the widget, I went a > >>little > >>further: it actually generates a code-stub for each of those actions > >>(!!!) which helps me tremendously. I hope this mod is useful to othres. > >> > >>BTW: A minor tweak with this version of layoutEditor - when you create > >>a new project, you can select which FrameClass to use. The default is > >>model.Background, of course. > >> > >> > >>Have fun with it: > >> > >> > >>https://sourceforge.net/tracker/?func=detail&aid=3288344&group_id=1901 > >>5&atid=369015 > >> > -- > >>John Henry > >>---------------------------------------------------------------------- > >>-------- Benefiting from Server Virtualization: Beyond Initial > >>Workload Consolidation -- Increasing the use of server virtualization > >>is a top priority.Virtualization can reduce costs, simplify > >>management, and improve application availability and disaster > >>protection. Learn more about boosting the value of server > >>virtualization. http://p.sf.net/sfu/vmware-sfdev2dev > >>_______________________________________________ > >>Pythoncard-users mailing list > >>Pyt...@li... > >>https://lists.sourceforge.net/lists/listinfo/pythoncard-users > >> > >> > > > -------------- next part -------------- > An HTML attachment was scrubbed... > > ------------------------------ > > ------------------------------------------------------------------------------ > Benefiting from Server Virtualization: Beyond Initial Workload Consolidation >-- Increasing the use of server virtualization is a top priority.Virtualization >can reduce costs, simplify management, and improve application availability and >disaster protection. Learn more about boosting the value of server >virtualization. http://p.sf.net/sfu/vmware-sfdev2dev > > ------------------------------ > > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > > > End of Pythoncard-users Digest, Vol 40, Issue 10 > ************************************************ > > ------------------------------------------------------------------------------ > Benefiting from Server Virtualization: Beyond Initial Workload > Consolidation -- Increasing the use of server virtualization is a top > priority.Virtualization can reduce costs, simplify management, and improve > application availability and disaster protection. Learn more about boosting > the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > |
From: Teuvo E. <te...@gm...> - 2011-04-20 17:49:48
|
Maybe it's somehow about the environment? For my PCLinuxOS the action editor button does not appear either. But in Windows Vista is it there. In vista I recall it generating some actionbindings... which I've never used in my projects. (Also in my PCLOS the new project wizard generates only two files; .py and rsrc.py files.) I have the following env for python 2.6.6 in my up-to-date PCLOS: ... python2.6/site-packages/wx-2.8-gtk2-unicode/wxPython-2.8.10.1-py2.6.egg-info If this is of any help.. -Teuvo 2011/4/20 John Henry <ec...@ya...> > It's a button on the resourceEditor. If you start up the layoutEditor, the > resource editor should pop up. You should see the ActionEditor. > > The code stub is created when you start a new project. For instance, if > your > project is MyProject, you should end up with 3 files: MyProject.py, > MyProject.,rsrc.py and MyProject_rsrc.py > > Do you have all 3 files? > -- > John Henry > > > > ----- Original Message ---- > > From: "Wagner, John" <ja...@me...> > > To: "pyt...@li..." > ><pyt...@li...> > > Sent: Wed, April 20, 2011 9:39:10 AM > > Subject: [Pythoncard-users] Action Editor > > > > The Action Editor sounds like a very useful modification to the Property > >Editor, but I can't get it to show up. I took the files and copied them > into > >the appropriate pythoncard directories but the ActionEditor button > doesn't show > >up, and no action stub code is generated. > > > > > > Is there something else that needs to be configured in order to make the > >action editor appear? > > > > > > Thanks, > > John Wagner > |
From: Wagner, J. <ja...@me...> - 2011-04-20 17:11:43
|
The pythoncard dynamic graph and matplotlib widget are wonderful. The matplotlib widget is a major addition to pythoncard, and the dynamic graph makes an excellent demo. Thanks for posting it. John Wagner -----Original Message----- From: pyt...@li... [mailto:pyt...@li...] Sent: Wednesday, April 20, 2011 12:00 AM To: pyt...@li... Subject: Pythoncard-users Digest, Vol 40, Issue 10 Send Pythoncard-users mailing list submissions to pyt...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/pythoncard-users or, via email, send a message with subject or body 'help' to pyt...@li... You can reach the person managing the list at pyt...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of Pythoncard-users digest..." Today's Topics: 1. Dynamic Graph in Matplotlib/Pythoncard (was Re: Added Matplotlib FigureCanvas widget to Pythoncard) (John Henry) 2. Re: Action Editor resurracted (Alec Bennett) 3. Re: Action Editor resurracted (John Henry) ---------------------------------------------------------------------- Message: 1 Date: Sun, 17 Apr 2011 20:54:56 -0700 (PDT) From: John Henry <ec...@ya...> Subject: [Pythoncard-users] Dynamic Graph in Matplotlib/Pythoncard (was Re: Added Matplotlib FigureCanvas widget to Pythoncard) To: John Henry <kim...@ya...>, pyt...@li... Message-ID: <295...@we...> Content-Type: text/plain; charset="us-ascii" I uploaded a port of the 2nd example at http://eli.thegreenplace.net/2008/08/01/matplotlib-with-wxpython-guis/ for a dynamic graph (like a moving strip recorder) using the Pythoncard Matplotlib widget I added. https://sourceforge.net/tracker/?func=detail&aid=3288729&group_id=19015&atid=369015 Have fun! -- John Henry > >From: John Henry <ec...@ya...> >To: pyt...@li... >Sent: Wed, April 13, 2011 8:42:52 PM >Subject: Added Matplotlib FigureCanvas widget to Pythoncard > > >There are still work to be done but for an early (and working) version, >download >from: > > >https://sourceforge.net/tracker/?group_id=19015&atid=369015 > > >It might require my earlier submittions (pdfwindow, flashwindow, >drag-n-drop tree, MDLWindow w Sash)... > -- >John Henry -------------- next part -------------- An HTML attachment was scrubbed... ------------------------------ Message: 2 Date: Mon, 18 Apr 2011 05:34:59 -0700 From: Alec Bennett <wry...@gm...> Subject: Re: [Pythoncard-users] Action Editor resurracted To: John Henry <kim...@ya...> Cc: pyt...@li... Message-ID: <BANLkTiksZdQnNx+TYuREFLnn=J0g...@ma...> Content-Type: text/plain; charset="iso-8859-1" Thank you! Is there a list of what files have been modified? On Sat, Apr 16, 2011 at 7:25 PM, John Henry <ec...@ya...> wrote: > In 2004, there was a experimentalResourceEditor released with PythonCard. > To be honest, it wasn't very good (in my humble opinion). However, > it had one feature that I like a lot - the Action Editor. This is a > dialog for selecting which action (or methods) to activate for a particular widget. > For instance, if you created a button, you can select mouseClick, > mouseMove, and so forth. It was very nice because now I don't have to > memorize which widget can do what. I just select that from a list. > > It appears the code was never finished - or at least to the degree I > like to see it. With a later release of layoutEditor (not sure if it > was later or not but nonetheless, layoutEditor is what I use), this > feature was dropped - or never included in layoutEditor. > > Well, I like the feature so much that I decided to have it resurrected. > With the package uploaded (need to overlay on top of the existing one > - do your backup of the entire Pythoncard directory because I did some > mod to model.py and so forth), you will see a ActionEditor button in > the Property Editor window and when clicked, brings up the original > ActionEditor (cleaned up and debugged). > > In addition to just setting the actionBinding of the widget, I went a > little further: it actually generates a code-stub for each of those > actions > (!!!) which helps me tremendously. I hope this mod is useful to othres. > > BTW: A minor tweak with this version of layoutEditor - when you create > a new project, you can select which FrameClass to use. The default is > model.Background, of course. > > Have fun with it: > > > https://sourceforge.net/tracker/?func=detail&aid=3288344&group_id=1901 > 5&atid=369015 > > -- > John Henry > > > > ---------------------------------------------------------------------- > -------- Benefiting from Server Virtualization: Beyond Initial > Workload Consolidation -- Increasing the use of server virtualization > is a top priority.Virtualization can reduce costs, simplify > management, and improve application availability and disaster > protection. Learn more about boosting the value of server > virtualization. http://p.sf.net/sfu/vmware-sfdev2dev > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > > -------------- next part -------------- An HTML attachment was scrubbed... ------------------------------ Message: 3 Date: Tue, 19 Apr 2011 21:00:09 -0700 (PDT) From: John Henry <ec...@ya...> Subject: Re: [Pythoncard-users] Action Editor resurracted To: Alec Bennett <wry...@gm...>, John Henry <kim...@ya...> Cc: pyt...@li... Message-ID: <621...@we...> Content-Type: text/plain; charset="us-ascii" Sorry, don't have that list but should be obvious from the zip file. -- John Henry > >From: Alec Bennett <wry...@gm...> >To: John Henry <kim...@ya...> >Cc: pyt...@li... >Sent: Mon, April 18, 2011 5:34:59 AM >Subject: Re: [Pythoncard-users] Action Editor resurracted > >Thank you! > >Is there a list of what files have been modified? > > > > >On Sat, Apr 16, 2011 at 7:25 PM, John Henry <ec...@ya...> wrote: > >In 2004, there was a experimentalResourceEditor released with >PythonCard. To be honest, it wasn't very good (in my humble opinion). >However, it had one feature that I like a lot - the Action Editor. >This is a dialog for selecting which action (or methods) to activate >for a particular widget. For instance, if you created a button, you >can select mouseClick, mouseMove, and so forth. It was very nice >because now I don't have to memorize which widget can do what. I just select that from a list. >> >> >>It appears the code was never finished - or at least to the degree I >>like to see it. With a later release of layoutEditor (not sure if it >>was later or not but nonetheless, layoutEditor is what I use), this >>feature was dropped - or never included in layoutEditor. >> >> >>Well, I like the feature so much that I decided to have it >>resurrected. With the package uploaded (need to overlay on top of the >>existing one - do your backup of the entire Pythoncard directory >>because I did some mod to model.py and so forth), you will see a >>ActionEditor button in the Property Editor window and when clicked, brings up the original ActionEditor (cleaned up and debugged). >> >> >>In addition to just setting the actionBinding of the widget, I went a >>little >>further: it actually generates a code-stub for each of those actions >>(!!!) which helps me tremendously. I hope this mod is useful to othres. >> >>BTW: A minor tweak with this version of layoutEditor - when you create >>a new project, you can select which FrameClass to use. The default is >>model.Background, of course. >> >> >>Have fun with it: >> >> >>https://sourceforge.net/tracker/?func=detail&aid=3288344&group_id=1901 >>5&atid=369015 >> -- >>John Henry >>---------------------------------------------------------------------- >>-------- Benefiting from Server Virtualization: Beyond Initial >>Workload Consolidation -- Increasing the use of server virtualization >>is a top priority.Virtualization can reduce costs, simplify >>management, and improve application availability and disaster >>protection. Learn more about boosting the value of server >>virtualization. http://p.sf.net/sfu/vmware-sfdev2dev >>_______________________________________________ >>Pythoncard-users mailing list >>Pyt...@li... >>https://lists.sourceforge.net/lists/listinfo/pythoncard-users >> >> > -------------- next part -------------- An HTML attachment was scrubbed... ------------------------------ ------------------------------------------------------------------------------ Benefiting from Server Virtualization: Beyond Initial Workload Consolidation -- Increasing the use of server virtualization is a top priority.Virtualization can reduce costs, simplify management, and improve application availability and disaster protection. Learn more about boosting the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev ------------------------------ _______________________________________________ Pythoncard-users mailing list Pyt...@li... https://lists.sourceforge.net/lists/listinfo/pythoncard-users End of Pythoncard-users Digest, Vol 40, Issue 10 ************************************************ |
From: John H. <ec...@ya...> - 2011-04-20 17:08:06
|
It's a button on the resourceEditor. If you start up the layoutEditor, the resource editor should pop up. You should see the ActionEditor. The code stub is created when you start a new project. For instance, if your project is MyProject, you should end up with 3 files: MyProject.py, MyProject.,rsrc.py and MyProject_rsrc.py Do you have all 3 files? -- John Henry ----- Original Message ---- > From: "Wagner, John" <ja...@me...> > To: "pyt...@li..." ><pyt...@li...> > Sent: Wed, April 20, 2011 9:39:10 AM > Subject: [Pythoncard-users] Action Editor > > The Action Editor sounds like a very useful modification to the Property >Editor, but I can't get it to show up. I took the files and copied them into >the appropriate pythoncard directories but the ActionEditor button doesn't show >up, and no action stub code is generated. > > > Is there something else that needs to be configured in order to make the >action editor appear? > > > Thanks, > John Wagner > > ------------------------------------------------------------------------------ > Benefiting from Server Virtualization: Beyond Initial Workload > Consolidation -- Increasing the use of server virtualization is a top > priority.Virtualization can reduce costs, simplify management, and improve > application availability and disaster protection. Learn more about boosting > the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > |
From: Wagner, J. <ja...@me...> - 2011-04-20 16:53:42
|
The Action Editor sounds like a very useful modification to the Property Editor, but I can't get it to show up. I took the files and copied them into the appropriate pythoncard directories but the ActionEditor button doesn't show up, and no action stub code is generated. Is there something else that needs to be configured in order to make the action editor appear? Thanks, John Wagner |
From: Alec B. <wry...@gm...> - 2011-04-18 12:35:09
|
Thank you! Is there a list of what files have been modified? On Sat, Apr 16, 2011 at 7:25 PM, John Henry <ec...@ya...> wrote: > In 2004, there was a experimentalResourceEditor released with PythonCard. > To be honest, it wasn't very good (in my humble opinion). However, it had > one feature that I like a lot - the Action Editor. This is a dialog for > selecting which action (or methods) to activate for a particular widget. > For instance, if you created a button, you can select mouseClick, > mouseMove, and so forth. It was very nice because now I don't have to > memorize which widget can do what. I just select that from a list. > > It appears the code was never finished - or at least to the degree I like > to see it. With a later release of layoutEditor (not sure if it was later > or not but nonetheless, layoutEditor is what I use), this feature was > dropped - or never included in layoutEditor. > > Well, I like the feature so much that I decided to have it resurrected. > With the package uploaded (need to overlay on top of the existing one - do > your backup of the entire Pythoncard directory because I did some mod to > model.py and so forth), you will see a ActionEditor button in the Property > Editor window and when clicked, brings up the original ActionEditor (cleaned > up and debugged). > > In addition to just setting the actionBinding of the widget, I went a > little further: it actually generates a code-stub for each of those actions > (!!!) which helps me tremendously. I hope this mod is useful to othres. > > BTW: A minor tweak with this version of layoutEditor - when you create a > new project, you can select which FrameClass to use. The default is > model.Background, of course. > > Have fun with it: > > > https://sourceforge.net/tracker/?func=detail&aid=3288344&group_id=19015&atid=369015 > > -- > John Henry > > > > ------------------------------------------------------------------------------ > Benefiting from Server Virtualization: Beyond Initial Workload > Consolidation -- Increasing the use of server virtualization is a top > priority.Virtualization can reduce costs, simplify management, and improve > application availability and disaster protection. Learn more about boosting > the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > > |
From: John H. <ec...@ya...> - 2011-04-18 03:55:04
|
I uploaded a port of the 2nd example at http://eli.thegreenplace.net/2008/08/01/matplotlib-with-wxpython-guis/ for a dynamic graph (like a moving strip recorder) using the Pythoncard Matplotlib widget I added. https://sourceforge.net/tracker/?func=detail&aid=3288729&group_id=19015&atid=369015 Have fun! -- John Henry > >From: John Henry <ec...@ya...> >To: pyt...@li... >Sent: Wed, April 13, 2011 8:42:52 PM >Subject: Added Matplotlib FigureCanvas widget to Pythoncard > > >There are still work to be done but for an early (and working) version, download >from: > > >https://sourceforge.net/tracker/?group_id=19015&atid=369015 > > >It might require my earlier submittions (pdfwindow, flashwindow, drag-n-drop >tree, MDLWindow w Sash)... > -- >John Henry |
From: John H. <ec...@ya...> - 2011-04-13 06:29:07
|
Glad to announce that I got it working!!! -- John Henry > >From: John Henry <ec...@ya...> >To: pyt...@li... >Sent: Tue, April 12, 2011 12:59:22 PM >Subject: Fw: Adding MatplotLib widget to Pythoncard - and ALMOST works perfectly > > >Oops. The image was too big. Reattach. > -- >John Henry > > > >> >>----- Forwarded Message ---- >>From: John Henry <ec...@ya...> >>To: pyt...@li... >>Sent: Tue, April 12, 2011 12:46:40 PM >>Subject: Adding MatplotLib widget to Pythoncard - and ALMOST works perfectly >> >> >>I'm *this* close to a working Matplotlib widget in Pythoncard (see screen shot >>attached). Everything works except somehow all of my mouse events are gone, >>plus the canvas is not getting the the size and paint events. I wish somebody >>more knowledgeable in Pythoncard can help (via private email if you like). >> >> >>From the user perspective, the code looks like below (with some non-essential >>details omitted) - look how simple it is (compare with the original code >>at http://eli.thegreenplace.net/files/prog_code/wx_mpl_bars.py.txt >> >> >> >> >>############## >>""" >>This demo demonstrates how to embed a matplotlib (mpl) plot >>into a Pythoncard GUI application, including: >> >> >>* Using the navigation toolbar >>* Adding data to the plot >>* Dynamically modifying the plot's properties >>* Processing mpl events >>* Saving the plot to a file from a menu >> >> >>The main goal is to serve as a basis for developing rich Pythoncard GUI >>applications featuring mpl plots (using the mpl OO API). >> >> >>Eli Bendersky (el...@gm...) >>License: this code is in the public domain >>Last modified: 30.07.2008 >>""" >>import os >>import pprint >>import random >>import wx >> >> >># The recommended way to use wx with mpl is with the WXAgg >># backend. >># >>import matplotlib >>matplotlib.use('WXAgg') >>from matplotlib.figure import Figure >>from matplotlib.backends.backend_wxagg import \ >> NavigationToolbar2WxAgg as NavigationToolbar >> >> >>from PythonCard import model, dialog >> >> >>from pc_mpl_bars_rsrc import rsrc as BarsFrame_rsrc >> >> >>class BarsFrame(model.MDIParentBackground): >>def __init__(self, parent, rsrc): >># Create the mpl Figure and FigCanvas objects. >># 5x4 inches, 100 dots-per-inch >># >>model.MDIParentBackground.__init__(self, parent, aBgRsrc=rsrc) >>def on_initialize(self, event): >>self.components.slider_width.SetTickFreq(10, 1) >> >> >># Since we have only one plot, we can use add_axes >># instead of add_subplot, but then the subplot >># configuration tool in the navigation toolbar wouldn't >># work. >># >>figure=self.components.canvas.fig >>self.axes = figure.add_subplot(111) >># Create the navigation toolbar, tied to the canvas >># >>self.toolbar = NavigationToolbar(self.components.canvas) >>self.sizer(event) >>self.data = [5, 6, 9, 14] >>self.components.textbox.text=(' '.join(map(str, self.data))) >> >> >>self.draw_figure() >> >> >>def sizer(self, event): >><...sizer code skipped ...> >> >> >>def draw_figure(self): >>""" Redraws the figure >>""" >>str = self.components.textbox.text >>self.data = map(int, str.split()) >>x = range(len(self.data)) >> >> >># clear the axes and redraw the plot anew >># >>self.axes.clear() >>self.axes.grid(self.components.cb_grid.checked) >>self.axes.bar( >>left=x, >>height=self.data, >>width=self.components.slider_width.GetValue() / 100.0, >>align='center', >>alpha=0.44, >>picker=5) >>self.components.canvas.draw() >>def on_exit(self, event): >>self.Destroy() >> >> >>if __name__ == '__main__': >>app = model.Application(BarsFrame, rsrc=BarsFrame_rsrc) >>app.MainLoop() >> >> -- >>John Henry |
From: Teuvo E. <te...@gm...> - 2011-04-12 12:57:11
|
Hi Neil, I don't have a mac, but perhaps you can try if calling directly the wxPython code works. I assume this should work in mac too: ----------- from wx import ColourDialog, ID_OK dlg = ColourDialog(self) dlg.GetColourData().SetChooseFull(True) if dlg.ShowModal() == ID_OK: sColor = dlg.GetColourData().GetColour() dlg.Destroy() print sColor ----------- Not sure if this ref. code helps you, or anyone listening to find out what is the real problem... but if this does work for you and all else fails, maybe you can use this kind of code in you app. -Teuvo 2011/4/12 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX > On 12/4/11 03:12, hwg wrote: > > On Mac it seems the FontDialog does not work properly. When you try to > > open the font dialog, it flashes on the screen for a split second (in > > the lower right corner), then disappears. > > > > The same code run in Windows works fine. > > The only Mac I have with PythonCard installed at the moment is an old G3 > iMac + OSX 10.4.11 + Python 2.5.1 + wxPython 2.8.9.2. Your example works > OK on that when I run it, except the following warning appears in the > Terminal 3 times when I first open the font dialog: > > Python [2621] Unknown class NSTypographyPanelSlider in InterfaceBuilder > file > > -- > XXXXXXXXXXX > > |
From: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - 2011-04-12 12:10:11
|
On 12/4/11 03:12, hwg wrote: > On Mac it seems the FontDialog does not work properly. When you try to > open the font dialog, it flashes on the screen for a split second (in > the lower right corner), then disappears. > > The same code run in Windows works fine. The only Mac I have with PythonCard installed at the moment is an old G3 iMac + OSX 10.4.11 + Python 2.5.1 + wxPython 2.8.9.2. Your example works OK on that when I run it, except the following warning appears in the Terminal 3 times when I first open the font dialog: Python [2621] Unknown class NSTypographyPanelSlider in InterfaceBuilder file -- XXXXXXXXXXX |
From: hwg <hw...@ya...> - 2011-04-12 02:12:59
|
On Mac it seems the FontDialog does not work properly. When you try to open the font dialog, it flashes on the screen for a split second (in the lower right corner), then disappears. The same code run in Windows works fine. The code is pasted below. Any help would be appreciated. -hwg -------------------------------------- # fontDialog.py from PythonCard import model, dialog class MainWindow(model.Background): def on_btnColor_mouseClick(self, event): a = dialog.colorDialog(self).color self.components.txtTyping.foregroundColor = a event.target.backgroundColor = a def on_btnFont_mouseClick(self, event): a = dialog.fontDialog(self, event.target.font) self.components.txtTyping.font = a.font event.target.font = a.font app = model.Application(MainWindow) app.MainLoop() #fontDialog.rsrc.py {'application':{'type':'Application', 'name':'Template', 'backgrounds': [ {'type':'Background', 'name':'bgTemplate', 'title':u'Standard Template with File->Exit menu', 'size':(400, 300), 'menubar': {'type':'MenuBar', 'menus': [ {'type':'Menu', 'name':'menuFile', 'label':'&File', 'items': [ {'type':'MenuItem', 'name':'menuFileExit', 'label':'E&xit', 'command':'exit', }, ] }, ] }, 'components': [ {'type':'Button', 'name':'btnColor', 'position':(316, 10), 'label':u'Color...', }, {'type':'Button', 'name':'btnFont', 'position':(10, 10), 'label':u'Font...', }, {'type':'TextArea', 'name':'txtTyping', 'position':(10, 32), 'size':(381, 231), }, ] # end components } # end background ] # end backgrounds } } |
From: John H. <ec...@ya...> - 2011-04-03 23:05:20
|
That's nice. May be the owner can be motivated. Anyway, I uploaded my mode for supporting MDI at https://sourceforge.net/tracker/?group_id=19015&atid=369015 If interested, please give it a try and let me know if it works for you or not. -- John Henry > >From: Alec Bennett <wry...@gm...> >To: John Henry <kim...@ya...> >Cc: John Henry <ec...@ya...>; pyt...@li... >Sent: Sat, April 2, 2011 10:05:51 PM >Subject: Re: [Pythoncard-users] Added MDI support to Pythoncard (was MDI - >childwindows within a window) > >Just wanted to chime in that I too love PythonCard. I started using it before I >knew how to code in wxPython, and now that I'm pretty comfortable in wxPython I >still use and love PythonCard, especially for quickies. > >I'd love to see more development done on it, and since at the moment I don't >have any time, would be more than willing to donate some $$ if that was the sort >of thing that might help make it worthwhile for someone to work a new release >with these new features. > > > > > > > > > >On Sat, Apr 2, 2011 at 9:47 PM, John Henry <ec...@ya...> wrote: > >I evaluated Dado and yes, for what it does, it does it very well. For myself, >>I >>don't need database features. I just need simple User Interfacing. For that, >>Pythoncard fits my bill. I've probe around Pythoncard enough that if I need a >>new control, I can crank one out without too much trouble (exact the ones I >>couldn't get working - as listed in previous emails). >> >>I believe for most people that just need quick User Interfacing type of >>applications, Pythoncard remains a viable option. I've benefited greatly from >>Pythoncard and so within my limited ability, I am happy that I can contribute >>(a >>little) >> -- >>John Henry >> >> >> >> >>----- Original Message ---- >>> From: Peter Decker <pyd...@gm...> >>> To: Kael Fischer <kae...@gm...> >>> Cc: pyt...@li... >>> Sent: Sat, April 2, 2011 10:27:24 AM >>> Subject: Re: [Pythoncard-users] Added MDI support to Pythoncard (was MDI - >>>childwindows within a window) >>> >> >>> On Sat, Apr 2, 2011 at 1:11 PM, Kael Fischer <kae...@gm...> wrote: >>> > Python card is great. >>> > >>> > But I caution people stating out on large computationally or database >>> > intensive projects that while pythoncard makes the easy stuff very >>> > easy, it makes that hard stuff harder. Note that even using wxPython >>> > getting the process-based and thread-based multitasking working >>> > properly can be hard and is essential in any program that uses the >>> > cpu, disk and network intensively and still needs wx to be responsive, >>> > draw progress bars, etc. >>> > >>> > I'm warning about big data here (for a GUI anyway): trees with >>> > 1000's-10,000's of nodes, grid data stores with ~1M cells. >>> > >>> > I've written some cool programs in python card, but they never scaled >well. >>> >>> I used PythonCard for a few projects, and was impressed by how easy it >>> was to put together a simple app. But I know exactly what you mean >>> about scaling. And while I don't do heavy database apps, I do have to >>> save settings, configurations, etc., and this was a very manual >>> process in PythonCard. >>> >>> After I discovered Dabo a few years ago, I have only used PythonCard >>> occasionally, and each time I find myself missing Dabo. It's a much >>> cleaner wrapper around wxPython, and it comes with data binding built >>> in. And to get back to the subject, MDI forms have been a part of Dabo >>> since the beginning. >>> >>> Dabo is still being actively developed, and its user base is growing >>> all the time. You should definitely give it a try (and no, they don't >>> pay me to say this! I'm just a big fan!). http://dabodev.com >>> >>> -- >>> >>> # p.d. >>> >>> >------------------------------------------------------------------------------ >>> Create and publish websites with WebMatrix >>> Use the most popular FREE web apps or write code yourself; >>> WebMatrix provides all the features you need to develop and >>> publish your website. http://p.sf.net/sfu/ms-webmatrix-sf >>> _______________________________________________ >>> Pythoncard-users mailing list >>> Pyt...@li... >>> https://lists.sourceforge.net/lists/listinfo/pythoncard-users >>> >> >>------------------------------------------------------------------------------ >>Create and publish websites with WebMatrix >>Use the most popular FREE web apps or write code yourself; >>WebMatrix provides all the features you need to develop and >>publish your website. http://p.sf.net/sfu/ms-webmatrix-sf >>_______________________________________________ >>Pythoncard-users mailing list >>Pyt...@li... >>https://lists.sourceforge.net/lists/listinfo/pythoncard-users >> > |
From: Alec B. <wry...@gm...> - 2011-04-03 05:05:59
|
Just wanted to chime in that I too love PythonCard. I started using it before I knew how to code in wxPython, and now that I'm pretty comfortable in wxPython I still use and love PythonCard, especially for quickies. I'd love to see more development done on it, and since at the moment I don't have any time, would be more than willing to donate some $$ if that was the sort of thing that might help make it worthwhile for someone to work a new release with these new features. On Sat, Apr 2, 2011 at 9:47 PM, John Henry <ec...@ya...> wrote: > I evaluated Dado and yes, for what it does, it does it very well. For > myself, > I > don't need database features. I just need simple User Interfacing. For > that, > Pythoncard fits my bill. I've probe around Pythoncard enough that if I > need a > new control, I can crank one out without too much trouble (exact the ones I > couldn't get working - as listed in previous emails). > > I believe for most people that just need quick User Interfacing type of > applications, Pythoncard remains a viable option. I've benefited greatly > from > Pythoncard and so within my limited ability, I am happy that I can > contribute > (a > little) > -- > John Henry > > > > ----- Original Message ---- > > From: Peter Decker <pyd...@gm...> > > To: Kael Fischer <kae...@gm...> > > Cc: pyt...@li... > > Sent: Sat, April 2, 2011 10:27:24 AM > > Subject: Re: [Pythoncard-users] Added MDI support to Pythoncard (was MDI > - > >childwindows within a window) > > > > On Sat, Apr 2, 2011 at 1:11 PM, Kael Fischer <kae...@gm...> > wrote: > > > Python card is great. > > > > > > But I caution people stating out on large computationally or database > > > intensive projects that while pythoncard makes the easy stuff very > > > easy, it makes that hard stuff harder. Note that even using wxPython > > > getting the process-based and thread-based multitasking working > > > properly can be hard and is essential in any program that uses the > > > cpu, disk and network intensively and still needs wx to be responsive, > > > draw progress bars, etc. > > > > > > I'm warning about big data here (for a GUI anyway): trees with > > > 1000's-10,000's of nodes, grid data stores with ~1M cells. > > > > > > I've written some cool programs in python card, but they never scaled > well. > > > > I used PythonCard for a few projects, and was impressed by how easy it > > was to put together a simple app. But I know exactly what you mean > > about scaling. And while I don't do heavy database apps, I do have to > > save settings, configurations, etc., and this was a very manual > > process in PythonCard. > > > > After I discovered Dabo a few years ago, I have only used PythonCard > > occasionally, and each time I find myself missing Dabo. It's a much > > cleaner wrapper around wxPython, and it comes with data binding built > > in. And to get back to the subject, MDI forms have been a part of Dabo > > since the beginning. > > > > Dabo is still being actively developed, and its user base is growing > > all the time. You should definitely give it a try (and no, they don't > > pay me to say this! I'm just a big fan!). http://dabodev.com > > > > -- > > > > # p.d. > > > > > ------------------------------------------------------------------------------ > > Create and publish websites with WebMatrix > > Use the most popular FREE web apps or write code yourself; > > WebMatrix provides all the features you need to develop and > > publish your website. http://p.sf.net/sfu/ms-webmatrix-sf > > _______________________________________________ > > Pythoncard-users mailing list > > Pyt...@li... > > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > > > > > ------------------------------------------------------------------------------ > Create and publish websites with WebMatrix > Use the most popular FREE web apps or write code yourself; > WebMatrix provides all the features you need to develop and > publish your website. http://p.sf.net/sfu/ms-webmatrix-sf > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > |
From: John H. <ec...@ya...> - 2011-04-03 04:47:48
|
I evaluated Dado and yes, for what it does, it does it very well. For myself, I don't need database features. I just need simple User Interfacing. For that, Pythoncard fits my bill. I've probe around Pythoncard enough that if I need a new control, I can crank one out without too much trouble (exact the ones I couldn't get working - as listed in previous emails). I believe for most people that just need quick User Interfacing type of applications, Pythoncard remains a viable option. I've benefited greatly from Pythoncard and so within my limited ability, I am happy that I can contribute (a little) -- John Henry ----- Original Message ---- > From: Peter Decker <pyd...@gm...> > To: Kael Fischer <kae...@gm...> > Cc: pyt...@li... > Sent: Sat, April 2, 2011 10:27:24 AM > Subject: Re: [Pythoncard-users] Added MDI support to Pythoncard (was MDI - >childwindows within a window) > > On Sat, Apr 2, 2011 at 1:11 PM, Kael Fischer <kae...@gm...> wrote: > > Python card is great. > > > > But I caution people stating out on large computationally or database > > intensive projects that while pythoncard makes the easy stuff very > > easy, it makes that hard stuff harder. Note that even using wxPython > > getting the process-based and thread-based multitasking working > > properly can be hard and is essential in any program that uses the > > cpu, disk and network intensively and still needs wx to be responsive, > > draw progress bars, etc. > > > > I'm warning about big data here (for a GUI anyway): trees with > > 1000's-10,000's of nodes, grid data stores with ~1M cells. > > > > I've written some cool programs in python card, but they never scaled well. > > I used PythonCard for a few projects, and was impressed by how easy it > was to put together a simple app. But I know exactly what you mean > about scaling. And while I don't do heavy database apps, I do have to > save settings, configurations, etc., and this was a very manual > process in PythonCard. > > After I discovered Dabo a few years ago, I have only used PythonCard > occasionally, and each time I find myself missing Dabo. It's a much > cleaner wrapper around wxPython, and it comes with data binding built > in. And to get back to the subject, MDI forms have been a part of Dabo > since the beginning. > > Dabo is still being actively developed, and its user base is growing > all the time. You should definitely give it a try (and no, they don't > pay me to say this! I'm just a big fan!). http://dabodev.com > > -- > > # p.d. > > ------------------------------------------------------------------------------ > Create and publish websites with WebMatrix > Use the most popular FREE web apps or write code yourself; > WebMatrix provides all the features you need to develop and > publish your website. http://p.sf.net/sfu/ms-webmatrix-sf > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > |
From: Peter D. <pyd...@gm...> - 2011-04-02 17:27:31
|
On Sat, Apr 2, 2011 at 1:11 PM, Kael Fischer <kae...@gm...> wrote: > Python card is great. > > But I caution people stating out on large computationally or database > intensive projects that while pythoncard makes the easy stuff very > easy, it makes that hard stuff harder. Note that even using wxPython > getting the process-based and thread-based multitasking working > properly can be hard and is essential in any program that uses the > cpu, disk and network intensively and still needs wx to be responsive, > draw progress bars, etc. > > I'm warning about big data here (for a GUI anyway): trees with > 1000's-10,000's of nodes, grid data stores with ~1M cells. > > I've written some cool programs in python card, but they never scaled well. I used PythonCard for a few projects, and was impressed by how easy it was to put together a simple app. But I know exactly what you mean about scaling. And while I don't do heavy database apps, I do have to save settings, configurations, etc., and this was a very manual process in PythonCard. After I discovered Dabo a few years ago, I have only used PythonCard occasionally, and each time I find myself missing Dabo. It's a much cleaner wrapper around wxPython, and it comes with data binding built in. And to get back to the subject, MDI forms have been a part of Dabo since the beginning. Dabo is still being actively developed, and its user base is growing all the time. You should definitely give it a try (and no, they don't pay me to say this! I'm just a big fan!). http://dabodev.com -- # p.d. |
From: Kael F. <kae...@gm...> - 2011-04-02 17:11:51
|
Python card is great. But I caution people stating out on large computationally or database intensive projects that while pythoncard makes the easy stuff very easy, it makes that hard stuff harder. Note that even using wxPython getting the process-based and thread-based multitasking working properly can be hard and is essential in any program that uses the cpu, disk and network intensively and still needs wx to be responsive, draw progress bars, etc. I'm warning about big data here (for a GUI anyway): trees with 1000's-10,000's of nodes, grid data stores with ~1M cells. I've written some cool programs in python card, but they never scaled well. -Kael On Sat, Apr 2, 2011 at 8:53 AM, John Henry <ec...@ya...> wrote: > To give others an idea how simple Pythoncard is, I'll show you the code > necessary to produce the MDI example with Sashwindow that I posted earlier. > To create that ap, use the layout editor and create 2 resource files (the > widget childwindow is from the standard samples), one for the main window, > and one for the sash window (the one with a tree control and a button), and > then write the following (ridiculously simple) code: > ################################## > #!/usr/bin/python > """ > __version__ = "$Revision: 1.5 $" > __date__ = "$Date: 2004/04/30 16:26:12 $" > """ > import sys > from PythonCard import model > # Resource for the main window > from testMDI_rsrc import rsrc as testMDI_rsrc > # The widget example > from widgets import WidgetsTest > from widgets_rsrc import rsrc as widgets_rsrc > # Resource for the sash window > from sashLayoutWindow_rsrc import rsrc as SashWindow_rsrc > class wxMDIParentFrame(model.MDISashParentBackground): > def on_initialize(self, event): > # Pass the resource to the parent of the sash window > model.MDISashParentBackground.on_initialize(self, event, SashWindow_rsrc) > self.on_openNew_command(None) > # Need this for the sash contents to show up > self.resize(event) > # Opens a new widget window everytime the openNew option is selected > def on_openNew_command(self, event): > child1 = model.childWindow(self, WidgetsTest, rsrc=widgets_rsrc) > child1.Show(True) > > class MyBackground(model.Application): > def __init__(self, parent, rsrc): > model.Application.__init__(self, wxMDIParentFrame, rsrc=testMDI_rsrc) > def on_initialize(self, event): > # if you have any initialization > # including sizer setup, do it here > pass > if __name__ == '__main__': > app = model.Application(MyBackground) > app.MainLoop() > ################################# > I rest my case. > I attached the screen shot for completeness. Once I fix one more issue (when > I drag the sash window bar, the widget windows don't repaint unless I resize > the main), I am going to package up the MDI mod and upload to the Pythoncard > upload area. > -- > John Henry > > From: Teuvo Eloranta <te...@gm...> > To: John Henry <kim...@ya...> > Cc: John Henry <ec...@ya...>; Mark Carter <ma...@ma...>; > pyt...@li... > Sent: Sat, April 2, 2011 2:29:06 AM > Subject: Re: [Pythoncard-users] Added MDI support to Pythoncard (was MDI - > childwindows within a window) > > Hi there! > > It's so nice to hear people using Pythoncard, not to mention someone is > (willing to) developing it. > I think Pythoncard is an absolute superb tool for making GUI programs. > Amazingly fast method and produces code more readable (and short) than any > other (at least that i know of). > I've done something earlier with wxPython, but usually it's "too much" for > what I need, Pythoncard is definitely the nbr one tool I use for GUI > programs. > And when necessary, the missing pieces can be coded with wxPython still. > > For the developer, and everyone involved somehow for making pythoncard what > it is today - thank you! > > Just wanted to add my 5 cents too :) > > -Teuvo > > > 2011/4/2 John Henry <ec...@ya...> >> >> I couldn't agree with you more. Earlier there was a post claiming that he >> prefers wxPython over Pythoncard. I assume he's using a different animal >> than the one I am looking at. Pythoncard is simple, feature rich - and very >> stable. I've done numerous projects using Pythoncard. >> I've long suggested that somebody release a 1.0 version of Pythoncard. So >> far, it has fallen to death ears. If we can all convince the owner to do >> that, I can package up what I have done and contribute to the release. >> I've hecked together the following controls: >> pdfwindow, flashwindow, tree control, minimizable window (minimize to >> Windows lauch bar), MDI parent and child windows, sashwindows, ... >> I have to stress heck because I did all these kind of blind folded because >> I really don't know what's going on most of the time. Wing debugger is my >> friend. >> Controls I tried but unable to get it to work: >> matplotlib window, a graphic file viewer widget (works but not behaving >> properly), a MDI widget (not window). >> >> >> -- >> John Henry >> >> From: Mark Carter <ma...@ma...> >> To: pyt...@li... >> Sent: Fri, April 1, 2011 9:13:02 AM >> Subject: [Pythoncard-users] Added MDI support to Pythoncard (was MDI - >> childwindows within a window) >> >> Hi John. >> >> Awesome! Good to know someone is still developing PythonCard! PythonCard >> is really a super project, for infrequent programmers like myself looking >> for a Visual Basic-like development experience on Python, PythonCard does >> the job. >> >> I don't suppose you could shepherd through a new release? The current >> release is several years old IIRC, and the installer has issues (either with >> Vista and/or latest Python, can't recall). Most people who research >> PythonCard these days just assume it's a dead project. >> >> Mark >> >> >> On Fri, Apr 1, 2011 at 10:53 AM, John Henry <ec...@ya...> wrote: >>> >>> I am happy to report that I've succeeded in Pythoncardize >>> the wx.SashLayoutWindow control of wxPython >>> using similar technique to the MDI support I reported previously. Not >>> sure if >>> the screen capture attachment to this email will get stripped or not. If >>> you >>> don't see the screen shot, shout and I'll try to upload that somewhere. >>> >>> ########## mod to model.py ####################### >>> class Background(BackgroundBase, wx.Frame): >>> def __init__(self, aParent, aBgRsrc, init=None): >>> return BackgroundBase.__init__(self, aParent, aBgRsrc, >>> frameclass=wx.Frame, init=init) >>> >>> class MDIChildBackground(BackgroundBase, wx.MDIChildFrame): >>> def __init__(self, aParent, aBgRsrc, init=None): >>> return BackgroundBase.__init__(self, aParent, aBgRsrc, >>> frameclass=wx.MDIChildFrame, init=init) >>> >>> class MDIParentBackground(BackgroundBase, wx.MDIParentFrame): >>> def __init__(self, aParent, aBgRsrc, init=None): >>> return BackgroundBase.__init__(self, aParent, aBgRsrc, >>> frameclass=wx.MDIParentFrame, init=init) >>> >>> class SashWindow(BackgroundBase, wx.SashLayoutWindow): >>> def __init__(self, aParent, aBgRsrc, init=None): >>> rsrc = resource.Resource(aBgRsrc).application.backgrounds[0] >>> return BackgroundBase.__init__(self, aParent, rsrc, >>> frameclass=wx.SashLayoutWindow, init=init) >>> # Dummy routine >>> def SetMenuBar(self, child): >>> return >>> # Dummy routine >>> def GetStatusBar(self): >>> return >>> ########## end of mod to model.py #######################-- >>> John Henry >>> >>> >>> >>> ----- Original Message ---- >>> > From: John Henry <ec...@ya...> >>> > To: pyt...@li... >>> > Sent: Wed, March 9, 2011 10:08:39 AM >>> > Subject: Added MDI support to Pythoncard (was MDI - childwindows within >>> > a >>> >window) >>> > >>> > I am happy to let you know that I succeeded in adding MDI support to >>> > Pythoncard >>> > >>> > with only a few lines of modifications to the Background class in >>> > model.py >>> > >>> > I made the Background class into a BackgroundBase class, and have the >>> >Background >>> > >>> > class subclass from the BackgroundBase class. >>> > >>> > Then I added a MDIParentBackground and MDIChildBackground which simply >>> > force >>> > Background to subclass from wxMDIParentFrame and wxMDIChildFrame >>> > respectively, >>> > >>> > instead of the wx.Frame class. Once I've done that, wxPython does >>> > the rest >>> >of >>> > >>> > the work. >>> > >>> > ################ mod to model.py ###################### >>> > >>> > from wxPython.wx import wxMDIParentFrame, wxMDIChildFrame >>> > >>> > # Used to say: >>> > # class BackgroundBase(Scriptable, wx.Frame, event.EventSource): >>> > class BackgroundBase(Scriptable, event.EventSource): >>> > """ >>> > A window that contains Widgets. >>> > """ >>> > def __init__(self, aParent, aBgRsrc, frameclass=wx.Frame): >>> > ...<original code>... >>> > #Changed original code from invoking wx.Frame here to a method passed >>> > down >>> > # First, call the base class' __init__ method to create the >>> > frame >>> > frameclass.__init__(self, aParent, >>> > self.id, >>> > #self.name, >>> > aBgRsrc.title, >>> > position, >>> > aBgRsrc.size, >>> > style | wx.NO_FULL_REPAINT_ON_RESIZE, >>> > aBgRsrc.name) >>> > ...<rest of original code>... >>> > >>> > >>> > class Background(BackgroundBase, wx.Frame): >>> > def __init__(self, aParent, aBgRsrc): >>> > return BackgroundBase.__init__(self, aParent, aBgRsrc, >>> > frameclass=wx.Frame) >>> > >>> > class MDIParentBackground(BackgroundBase, wxMDIParentFrame): >>> > def __init__(self, aParent, aBgRsrc): >>> > return BackgroundBase.__init__(self, aParent, aBgRsrc, >>> > frameclass=wxMDIParentFrame) >>> > >>> > class MDIChildBackground(BackgroundBase, wxMDIChildFrame): >>> > def __init__(self, aParent, aBgRsrc): >>> > return BackgroundBase.__init__(self, aParent, aBgRsrc, >>> > frameclass=wxMDIChildFrame) >>> > >>> > ############## end of mod to model.py ######################### >>> > >>> > To use these two new classes, the code is remarkably unremarkable. >>> > The parent >>> > >>> > code: >>> > >>> > ############# Parent ###################### >>> > #!/usr/bin/python >>> > >>> > """ >>> > __version__ = "$Revision: 1.5 $" >>> > __date__ = "$Date: 2004/04/30 16:26:12 $" >>> > """ >>> > >>> > from PythonCard import model >>> > >>> > MDI_rsrc=\ >>> > {'application':{'type':'Application', >>> > 'name':'Template', >>> > 'backgrounds': [ >>> > {'type':'Background', >>> > 'name':'bgTemplate', >>> > 'title':'Testing MDI Controls', >>> > 'size':(400, 300), >>> > 'style':['resizeable'], >>> > >>> > 'menubar': {'type':'MenuBar', >>> > 'menus': [ >>> > {'type':'Menu', >>> > 'name':'menuFile', >>> > 'label':'&File', >>> > 'items': [ >>> > {'type':'MenuItem', >>> > 'name':'menuFileExit', >>> > 'label':'E&xit', >>> > 'command':'exit', >>> > }, >>> > ] >>> > }, >>> > {'type':'Menu', >>> > 'name':'menuOptions', >>> > 'label':'Options', >>> > 'items': [ >>> > {'type':'MenuItem', >>> > 'name':'menuOptionsOpenNew', >>> > 'label':'Open New\tAlt+N', >>> > 'command':'openNew', >>> > }, >>> > ] >>> > }, >>> > ] >>> > }, >>> > 'components': [ >>> > >>> > ] # end components >>> > } # end background >>> > ] # end backgrounds >>> > } } >>> > >>> > MyCW_rsrc=\ >>> > {'application':{'type':'Application', >>> > 'name':'Template', >>> > 'backgrounds': [ >>> > {'type':'Background', >>> > 'name':'bgTemplate', >>> > 'title':'Standard Template with File->Exit menu', >>> > 'size':(698, 517), >>> > 'style':['resizeable'], >>> > >>> > 'menubar': {'type':'MenuBar', >>> > 'menus': [ >>> > {'type':'Menu', >>> > 'name':'menuFile', >>> > 'label':'&File', >>> > 'items': [ >>> > {'type':'MenuItem', >>> > 'name':'menuFileExit', >>> > 'label':'E&xit', >>> > 'command':'exit', >>> > }, >>> > ] >>> > }, >>> > {'type':'Menu', >>> > 'name':'menuOptions', >>> > 'label':'Options', >>> > 'items': [ >>> > {'type':'MenuItem', >>> > 'name':'menuOptionsOpenNew', >>> > 'label':'Open New\tAlt+N', >>> > 'command':'openNew', >>> > }, >>> > ] >>> > }, >>> > ] >>> > }, >>> > 'components': [ >>> > >>> > {'type':'TextArea', >>> > 'name':'TextArea1', >>> > 'position':(20, 20), >>> > 'size':(651, 333), >>> > }, >>> > >>> > {'type':'Button', >>> > 'name':'Button1', >>> > 'position':(559, 376), >>> > 'label':'Button1', >>> > }, >>> > >>> > ] # end components >>> > } # end background >>> > ] # end backgrounds >>> > } } >>> > >>> > class MyBackground(model.MDIParentBackground): >>> > >>> > def on_initialize(self, event): >>> > # if you have any initialization >>> > # including sizer setup, do it here >>> > #MDI.on_initialize(self, event) >>> > pass >>> > def on_openNew_command ( self, event ): >>> > # Create a child window >>> > child = model.childWindow(self, MyCW, rsrc=MyCW_rsrc) >>> > >>> > if __name__ == '__main__': >>> > app = model.Application(MyBackground, None, MDI_rsrc) >>> > app.MainLoop() >>> > ############# End of Parent ###################### >>> > >>> > ############# Child ###################### >>> > class MyCW(model.MDIChildBackground): >>> > >>> > def on_initialize(self, event): >>> > self.parent = self.getParent() >>> > self.components.TextArea1.text='I am only a child.' >>> > def on_openNew_command ( self, event ): >>> > return self.parent.on_openNew_command ( event ) >>> > ############# End of Child ###################### >>> > >>> > That's it!!! >>> > >>> > Now I have to play around with resizer to see how that would work >>> > here. >>> > >>> > -- >>> > John Henry >>> > >>> >>> ------------------------------------------------------------------------------ >>> Create and publish websites with WebMatrix >>> Use the most popular FREE web apps or write code yourself; >>> WebMatrix provides all the features you need to develop and >>> publish your website. http://p.sf.net/sfu/ms-webmatrix-sf >>> >>> _______________________________________________ >>> Pythoncard-users mailing list >>> Pyt...@li... >>> https://lists.sourceforge.net/lists/listinfo/pythoncard-users >>> >> >> >> >> -- >> Mark Carter, OCT >> markcarter.tel >> >> >> >> -- >> Mark Carter, OCT >> markcarter.tel >> >> >> ------------------------------------------------------------------------------ >> Create and publish websites with WebMatrix >> Use the most popular FREE web apps or write code yourself; >> WebMatrix provides all the features you need to develop and >> publish your website. http://p.sf.net/sfu/ms-webmatrix-sf >> >> _______________________________________________ >> Pythoncard-users mailing list >> Pyt...@li... >> https://lists.sourceforge.net/lists/listinfo/pythoncard-users >> > > > ------------------------------------------------------------------------------ > Create and publish websites with WebMatrix > Use the most popular FREE web apps or write code yourself; > WebMatrix provides all the features you need to develop and > publish your website. http://p.sf.net/sfu/ms-webmatrix-sf > > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > > |
From: Teuvo E. <te...@gm...> - 2011-04-02 09:29:33
|
Hi there! It's so nice to hear people using Pythoncard, not to mention someone is (willing to) developing it. I think Pythoncard is an absolute superb tool for making GUI programs. Amazingly fast method and produces code more readable (and short) than any other (at least that i know of). I've done something earlier with wxPython, but usually it's "too much" for what I need, Pythoncard is definitely the nbr one tool I use for GUI programs. And when necessary, the missing pieces can be coded with wxPython still. For the developer, and everyone involved somehow for making pythoncard what it is today - thank you! Just wanted to add my 5 cents too :) -Teuvo 2011/4/2 John Henry <ec...@ya...> > I couldn't agree with you more. Earlier there was a post claiming that he > prefers wxPython over Pythoncard. I assume he's using a different animal > than the one I am looking at. Pythoncard is simple, feature rich - and very > stable. I've done numerous projects using Pythoncard. > > I've long suggested that somebody release a 1.0 version of Pythoncard. So > far, it has fallen to death ears. If we can all convince the owner to do > that, I can package up what I have done and contribute to the release. > > I've hecked together the following controls: > > pdfwindow, flashwindow, tree control, minimizable window (minimize to > Windows lauch bar), MDI parent and child windows, sashwindows, ... > > I have to stress heck because I did all these kind of blind folded because > I really don't know what's going on most of the time. Wing debugger is my > friend. > > Controls I tried but unable to get it to work: > > matplotlib window, a graphic file viewer widget (works but not behaving > properly), a MDI widget (not window). > > > > -- > John Henry > > > *From:* Mark Carter <ma...@ma...> > > *To:* pyt...@li... > *Sent:* Fri, April 1, 2011 9:13:02 AM > *Subject:* [Pythoncard-users] Added MDI support to Pythoncard (was MDI - > childwindows within a window) > > Hi John. > > Awesome! Good to know someone is still developing PythonCard! PythonCard > is really a super project, for infrequent programmers like myself looking > for a Visual Basic-like development experience on Python, PythonCard does > the job. > > I don't suppose you could shepherd through a new release? The current > release is several years old IIRC, and the installer has issues (either with > Vista and/or latest Python, can't recall). Most people who research > PythonCard these days just assume it's a dead project. > > Mark > > > On Fri, Apr 1, 2011 at 10:53 AM, John Henry <ec...@ya...> wrote: > >> I am happy to report that I've succeeded in Pythoncardize >> the wx.SashLayoutWindow control of wxPython >> using similar technique to the MDI support I reported previously. Not >> sure if >> the screen capture attachment to this email will get stripped or not. If >> you >> don't see the screen shot, shout and I'll try to upload that somewhere. >> >> ########## mod to model.py ####################### >> class Background(BackgroundBase, wx.Frame): >> def __init__(self, aParent, aBgRsrc, init=None): >> return BackgroundBase.__init__(self, aParent, aBgRsrc, >> frameclass=wx.Frame, init=init) >> >> class MDIChildBackground(BackgroundBase, wx.MDIChildFrame): >> def __init__(self, aParent, aBgRsrc, init=None): >> return BackgroundBase.__init__(self, aParent, aBgRsrc, >> frameclass=wx.MDIChildFrame, init=init) >> >> class MDIParentBackground(BackgroundBase, wx.MDIParentFrame): >> def __init__(self, aParent, aBgRsrc, init=None): >> return BackgroundBase.__init__(self, aParent, aBgRsrc, >> frameclass=wx.MDIParentFrame, init=init) >> >> class SashWindow(BackgroundBase, wx.SashLayoutWindow): >> def __init__(self, aParent, aBgRsrc, init=None): >> rsrc = resource.Resource(aBgRsrc).application.backgrounds[0] >> return BackgroundBase.__init__(self, aParent, rsrc, >> frameclass=wx.SashLayoutWindow, init=init) >> # Dummy routine >> def SetMenuBar(self, child): >> return >> # Dummy routine >> def GetStatusBar(self): >> return >> ########## end of mod to model.py #######################-- >> John Henry >> >> >> >> ----- Original Message ---- >> > From: John Henry <ec...@ya...> >> > To: pyt...@li... >> > Sent: Wed, March 9, 2011 10:08:39 AM >> > Subject: Added MDI support to Pythoncard (was MDI - childwindows within >> a >> >window) >> > >> > I am happy to let you know that I succeeded in adding MDI support to >> Pythoncard >> > >> > with only a few lines of modifications to the Background class in >> model.py >> > >> > I made the Background class into a BackgroundBase class, and have the >> >Background >> > >> > class subclass from the BackgroundBase class. >> > >> > Then I added a MDIParentBackground and MDIChildBackground which simply >> force >> > Background to subclass from wxMDIParentFrame and wxMDIChildFrame >> respectively, >> > >> > instead of the wx.Frame class. Once I've done that, wxPython does the >> rest >> >of >> > >> > the work. >> > >> > ################ mod to model.py ###################### >> > >> > from wxPython.wx import wxMDIParentFrame, wxMDIChildFrame >> > >> > # Used to say: >> > # class BackgroundBase(Scriptable, wx.Frame, event.EventSource): >> > class BackgroundBase(Scriptable, event.EventSource): >> > """ >> > A window that contains Widgets. >> > """ >> > def __init__(self, aParent, aBgRsrc, frameclass=wx.Frame): >> > ...<original code>... >> > #Changed original code from invoking wx.Frame here to a method passed >> down >> > # First, call the base class' __init__ method to create the >> frame >> > frameclass.__init__(self, aParent, >> > self.id, >> > #self.name, >> > aBgRsrc.title, >> > position, >> > aBgRsrc.size, >> > style | wx.NO_FULL_REPAINT_ON_RESIZE, >> > aBgRsrc.name) >> > ...<rest of original code>... >> > >> > >> > class Background(BackgroundBase, wx.Frame): >> > def __init__(self, aParent, aBgRsrc): >> > return BackgroundBase.__init__(self, aParent, aBgRsrc, >> > frameclass=wx.Frame) >> > >> > class MDIParentBackground(BackgroundBase, wxMDIParentFrame): >> > def __init__(self, aParent, aBgRsrc): >> > return BackgroundBase.__init__(self, aParent, aBgRsrc, >> > frameclass=wxMDIParentFrame) >> > >> > class MDIChildBackground(BackgroundBase, wxMDIChildFrame): >> > def __init__(self, aParent, aBgRsrc): >> > return BackgroundBase.__init__(self, aParent, aBgRsrc, >> > frameclass=wxMDIChildFrame) >> > >> > ############## end of mod to model.py ######################### >> > >> > To use these two new classes, the code is remarkably unremarkable. The >> parent >> > >> > code: >> > >> > ############# Parent ###################### >> > #!/usr/bin/python >> > >> > """ >> > __version__ = "$Revision: 1.5 $" >> > __date__ = "$Date: 2004/04/30 16:26:12 $" >> > """ >> > >> > from PythonCard import model >> > >> > MDI_rsrc=\ >> > {'application':{'type':'Application', >> > 'name':'Template', >> > 'backgrounds': [ >> > {'type':'Background', >> > 'name':'bgTemplate', >> > 'title':'Testing MDI Controls', >> > 'size':(400, 300), >> > 'style':['resizeable'], >> > >> > 'menubar': {'type':'MenuBar', >> > 'menus': [ >> > {'type':'Menu', >> > 'name':'menuFile', >> > 'label':'&File', >> > 'items': [ >> > {'type':'MenuItem', >> > 'name':'menuFileExit', >> > 'label':'E&xit', >> > 'command':'exit', >> > }, >> > ] >> > }, >> > {'type':'Menu', >> > 'name':'menuOptions', >> > 'label':'Options', >> > 'items': [ >> > {'type':'MenuItem', >> > 'name':'menuOptionsOpenNew', >> > 'label':'Open New\tAlt+N', >> > 'command':'openNew', >> > }, >> > ] >> > }, >> > ] >> > }, >> > 'components': [ >> > >> > ] # end components >> > } # end background >> > ] # end backgrounds >> > } } >> > >> > MyCW_rsrc=\ >> > {'application':{'type':'Application', >> > 'name':'Template', >> > 'backgrounds': [ >> > {'type':'Background', >> > 'name':'bgTemplate', >> > 'title':'Standard Template with File->Exit menu', >> > 'size':(698, 517), >> > 'style':['resizeable'], >> > >> > 'menubar': {'type':'MenuBar', >> > 'menus': [ >> > {'type':'Menu', >> > 'name':'menuFile', >> > 'label':'&File', >> > 'items': [ >> > {'type':'MenuItem', >> > 'name':'menuFileExit', >> > 'label':'E&xit', >> > 'command':'exit', >> > }, >> > ] >> > }, >> > {'type':'Menu', >> > 'name':'menuOptions', >> > 'label':'Options', >> > 'items': [ >> > {'type':'MenuItem', >> > 'name':'menuOptionsOpenNew', >> > 'label':'Open New\tAlt+N', >> > 'command':'openNew', >> > }, >> > ] >> > }, >> > ] >> > }, >> > 'components': [ >> > >> > {'type':'TextArea', >> > 'name':'TextArea1', >> > 'position':(20, 20), >> > 'size':(651, 333), >> > }, >> > >> > {'type':'Button', >> > 'name':'Button1', >> > 'position':(559, 376), >> > 'label':'Button1', >> > }, >> > >> > ] # end components >> > } # end background >> > ] # end backgrounds >> > } } >> > >> > class MyBackground(model.MDIParentBackground): >> > >> > def on_initialize(self, event): >> > # if you have any initialization >> > # including sizer setup, do it here >> > #MDI.on_initialize(self, event) >> > pass >> > def on_openNew_command ( self, event ): >> > # Create a child window >> > child = model.childWindow(self, MyCW, rsrc=MyCW_rsrc) >> > >> > if __name__ == '__main__': >> > app = model.Application(MyBackground, None, MDI_rsrc) >> > app.MainLoop() >> > ############# End of Parent ###################### >> > >> > ############# Child ###################### >> > class MyCW(model.MDIChildBackground): >> > >> > def on_initialize(self, event): >> > self.parent = self.getParent() >> > self.components.TextArea1.text='I am only a child.' >> > def on_openNew_command ( self, event ): >> > return self.parent.on_openNew_command ( event ) >> > ############# End of Child ###################### >> > >> > That's it!!! >> > >> > Now I have to play around with resizer to see how that would work here. >> > >> > -- >> > John Henry >> > >> >> ------------------------------------------------------------------------------ >> Create and publish websites with WebMatrix >> Use the most popular FREE web apps or write code yourself; >> WebMatrix provides all the features you need to develop and >> publish your website. http://p.sf.net/sfu/ms-webmatrix-sf >> >> _______________________________________________ >> Pythoncard-users mailing list >> Pyt...@li... >> https://lists.sourceforge.net/lists/listinfo/pythoncard-users >> >> > > > -- > Mark Carter, OCT > markcarter.tel > > > > > -- > Mark Carter, OCT > markcarter.tel > > > > ------------------------------------------------------------------------------ > Create and publish websites with WebMatrix > Use the most popular FREE web apps or write code yourself; > WebMatrix provides all the features you need to develop and > publish your website. http://p.sf.net/sfu/ms-webmatrix-sf > > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > > |
From: John H. <ec...@ya...> - 2011-04-01 22:43:53
|
I couldn't agree with you more. Earlier there was a post claiming that he prefers wxPython over Pythoncard. I assume he's using a different animal than the one I am looking at. Pythoncard is simple, feature rich - and very stable. I've done numerous projects using Pythoncard. I've long suggested that somebody release a 1.0 version of Pythoncard. So far, it has fallen to death ears. If we can all convince the owner to do that, I can package up what I have done and contribute to the release. I've hecked together the following controls: pdfwindow, flashwindow, tree control, minimizable window (minimize to Windows lauch bar), MDI parent and child windows, sashwindows, ... I have to stress heck because I did all these kind of blind folded because I really don't know what's going on most of the time. Wing debugger is my friend. Controls I tried but unable to get it to work: matplotlib window, a graphic file viewer widget (works but not behaving properly), a MDI widget (not window). -- John Henry > >From: Mark Carter <ma...@ma...> >To: pyt...@li... >Sent: Fri, April 1, 2011 9:13:02 AM >Subject: [Pythoncard-users] Added MDI support to Pythoncard (was MDI - >childwindows within a window) > > >Hi John. > >Awesome! Good to know someone is still developing PythonCard! PythonCard is >really a super project, for infrequent programmers like myself looking for a >Visual Basic-like development experience on Python, PythonCard does the job. > >I don't suppose you could shepherd through a new release? The current release >is several years old IIRC, and the installer has issues (either with Vista >and/or latest Python, can't recall). Most people who research PythonCard these >days just assume it's a dead project. > >Mark > > > >On Fri, Apr 1, 2011 at 10:53 AM, John Henry <ec...@ya...> wrote: > >I am happy to report that I've succeeded in Pythoncardize >>the wx.SashLayoutWindow control of wxPython >> using similar technique to the MDI support I reported previously. Not sure >if >>the screen capture attachment to this email will get stripped or not. If you >>don't see the screen shot, shout and I'll try to upload that somewhere. >> >>########## mod to model.py ####################### >>class Background(BackgroundBase, wx.Frame): >> def __init__(self, aParent, aBgRsrc, init=None): >> return BackgroundBase.__init__(self, aParent, aBgRsrc, >>frameclass=wx.Frame, init=init) >> >>class MDIChildBackground(BackgroundBase, wx.MDIChildFrame): >> def __init__(self, aParent, aBgRsrc, init=None): >> return BackgroundBase.__init__(self, aParent, aBgRsrc, >>frameclass=wx.MDIChildFrame, init=init) >> >>class MDIParentBackground(BackgroundBase, wx.MDIParentFrame): >> def __init__(self, aParent, aBgRsrc, init=None): >> return BackgroundBase.__init__(self, aParent, aBgRsrc, >>frameclass=wx.MDIParentFrame, init=init) >> >>class SashWindow(BackgroundBase, wx.SashLayoutWindow): >> def __init__(self, aParent, aBgRsrc, init=None): >> rsrc = resource.Resource(aBgRsrc).application.backgrounds[0] >> return BackgroundBase.__init__(self, aParent, rsrc, >>frameclass=wx.SashLayoutWindow, init=init) >> # Dummy routine >> def SetMenuBar(self, child): >> return >> # Dummy routine >> def GetStatusBar(self): >> return >>########## end of mod to model.py #######################-- >>John Henry >> >> >> >>----- Original Message ---- >>> From: John Henry <ec...@ya...> >>> To: pyt...@li... >>> Sent: Wed, March 9, 2011 10:08:39 AM >>> Subject: Added MDI support to Pythoncard (was MDI - childwindows within a >>>window) >>> >>> I am happy to let you know that I succeeded in adding MDI support to >>Pythoncard >>> >>> with only a few lines of modifications to the Background class in model.py >>> >>> I made the Background class into a BackgroundBase class, and have the >>>Background >>> >>> class subclass from the BackgroundBase class. >>> >>> Then I added a MDIParentBackground and MDIChildBackground which simply force >>> Background to subclass from wxMDIParentFrame and wxMDIChildFrame >>respectively, >>> >>> instead of the wx.Frame class. Once I've done that, wxPython does the rest >>>of >>> >>> the work. >>> >>> ################ mod to model.py ###################### >>> >>> from wxPython.wx import wxMDIParentFrame, wxMDIChildFrame >>> >>> # Used to say: >>> # class BackgroundBase(Scriptable, wx.Frame, event.EventSource): >>> class BackgroundBase(Scriptable, event.EventSource): >>> """ >>> A window that contains Widgets. >>> """ >>> def __init__(self, aParent, aBgRsrc, frameclass=wx.Frame): >>> ...<original code>... >>> #Changed original code from invoking wx.Frame here to a method passed down >>> # First, call the base class' __init__ method to create the frame >>> frameclass.__init__(self, aParent, >>> self.id, >>> #self.name, >>> aBgRsrc.title, >>> position, >>> aBgRsrc.size, >>> style | wx.NO_FULL_REPAINT_ON_RESIZE, >>> aBgRsrc.name) >>> ...<rest of original code>... >>> >>> >>> class Background(BackgroundBase, wx.Frame): >>> def __init__(self, aParent, aBgRsrc): >>> return BackgroundBase.__init__(self, aParent, aBgRsrc, >>> frameclass=wx.Frame) >>> >>> class MDIParentBackground(BackgroundBase, wxMDIParentFrame): >>> def __init__(self, aParent, aBgRsrc): >>> return BackgroundBase.__init__(self, aParent, aBgRsrc, >>> frameclass=wxMDIParentFrame) >>> >>> class MDIChildBackground(BackgroundBase, wxMDIChildFrame): >>> def __init__(self, aParent, aBgRsrc): >>> return BackgroundBase.__init__(self, aParent, aBgRsrc, >>> frameclass=wxMDIChildFrame) >>> >>> ############## end of mod to model.py ######################### >>> >>> To use these two new classes, the code is remarkably unremarkable. The >>parent >>> >>> code: >>> >>> ############# Parent ###################### >>> #!/usr/bin/python >>> >>> """ >>> __version__ = "$Revision: 1.5 $" >>> __date__ = "$Date: 2004/04/30 16:26:12 $" >>> """ >>> >>> from PythonCard import model >>> >>> MDI_rsrc=\ >>> {'application':{'type':'Application', >>> 'name':'Template', >>> 'backgrounds': [ >>> {'type':'Background', >>> 'name':'bgTemplate', >>> 'title':'Testing MDI Controls', >>> 'size':(400, 300), >>> 'style':['resizeable'], >>> >>> 'menubar': {'type':'MenuBar', >>> 'menus': [ >>> {'type':'Menu', >>> 'name':'menuFile', >>> 'label':'&File', >>> 'items': [ >>> {'type':'MenuItem', >>> 'name':'menuFileExit', >>> 'label':'E&xit', >>> 'command':'exit', >>> }, >>> ] >>> }, >>> {'type':'Menu', >>> 'name':'menuOptions', >>> 'label':'Options', >>> 'items': [ >>> {'type':'MenuItem', >>> 'name':'menuOptionsOpenNew', >>> 'label':'Open New\tAlt+N', >>> 'command':'openNew', >>> }, >>> ] >>> }, >>> ] >>> }, >>> 'components': [ >>> >>> ] # end components >>> } # end background >>> ] # end backgrounds >>> } } >>> >>> MyCW_rsrc=\ >>> {'application':{'type':'Application', >>> 'name':'Template', >>> 'backgrounds': [ >>> {'type':'Background', >>> 'name':'bgTemplate', >>> 'title':'Standard Template with File->Exit menu', >>> 'size':(698, 517), >>> 'style':['resizeable'], >>> >>> 'menubar': {'type':'MenuBar', >>> 'menus': [ >>> {'type':'Menu', >>> 'name':'menuFile', >>> 'label':'&File', >>> 'items': [ >>> {'type':'MenuItem', >>> 'name':'menuFileExit', >>> 'label':'E&xit', >>> 'command':'exit', >>> }, >>> ] >>> }, >>> {'type':'Menu', >>> 'name':'menuOptions', >>> 'label':'Options', >>> 'items': [ >>> {'type':'MenuItem', >>> 'name':'menuOptionsOpenNew', >>> 'label':'Open New\tAlt+N', >>> 'command':'openNew', >>> }, >>> ] >>> }, >>> ] >>> }, >>> 'components': [ >>> >>> {'type':'TextArea', >>> 'name':'TextArea1', >>> 'position':(20, 20), >>> 'size':(651, 333), >>> }, >>> >>> {'type':'Button', >>> 'name':'Button1', >>> 'position':(559, 376), >>> 'label':'Button1', >>> }, >>> >>> ] # end components >>> } # end background >>> ] # end backgrounds >>> } } >>> >>> class MyBackground(model.MDIParentBackground): >>> >>> def on_initialize(self, event): >>> # if you have any initialization >>> # including sizer setup, do it here >>> #MDI.on_initialize(self, event) >>> pass >>> def on_openNew_command ( self, event ): >>> # Create a child window >>> child = model.childWindow(self, MyCW, rsrc=MyCW_rsrc) >>> >>> if __name__ == '__main__': >>> app = model.Application(MyBackground, None, MDI_rsrc) >>> app.MainLoop() >>> ############# End of Parent ###################### >>> >>> ############# Child ###################### >>> class MyCW(model.MDIChildBackground): >>> >>> def on_initialize(self, event): >>> self.parent = self.getParent() >>> self.components.TextArea1.text='I am only a child.' >>> def on_openNew_command ( self, event ): >>> return self.parent.on_openNew_command ( event ) >>> ############# End of Child ###################### >>> >>> That's it!!! >>> >>> Now I have to play around with resizer to see how that would work here. >>> >>> -- >>> John Henry >>> >>------------------------------------------------------------------------------ >>Create and publish websites with WebMatrix >>Use the most popular FREE web apps or write code yourself; >>WebMatrix provides all the features you need to develop and >>publish your website. http://p.sf.net/sfu/ms-webmatrix-sf >> >>_______________________________________________ >>Pythoncard-users mailing list >>Pyt...@li... >>https://lists.sourceforge.net/lists/listinfo/pythoncard-users >> >> > > >-- >Mark Carter, OCT >markcarter.tel > > > >-- >Mark Carter, OCT >markcarter.tel > |
From: Mark C. <ma...@ma...> - 2011-04-01 16:13:30
|
Hi John. Awesome! Good to know someone is still developing PythonCard! PythonCard is really a super project, for infrequent programmers like myself looking for a Visual Basic-like development experience on Python, PythonCard does the job. I don't suppose you could shepherd through a new release? The current release is several years old IIRC, and the installer has issues (either with Vista and/or latest Python, can't recall). Most people who research PythonCard these days just assume it's a dead project. Mark On Fri, Apr 1, 2011 at 10:53 AM, John Henry <ec...@ya...> wrote: > I am happy to report that I've succeeded in Pythoncardize > the wx.SashLayoutWindow control of wxPython > using similar technique to the MDI support I reported previously. Not > sure if > the screen capture attachment to this email will get stripped or not. If > you > don't see the screen shot, shout and I'll try to upload that somewhere. > > ########## mod to model.py ####################### > class Background(BackgroundBase, wx.Frame): > def __init__(self, aParent, aBgRsrc, init=None): > return BackgroundBase.__init__(self, aParent, aBgRsrc, > frameclass=wx.Frame, init=init) > > class MDIChildBackground(BackgroundBase, wx.MDIChildFrame): > def __init__(self, aParent, aBgRsrc, init=None): > return BackgroundBase.__init__(self, aParent, aBgRsrc, > frameclass=wx.MDIChildFrame, init=init) > > class MDIParentBackground(BackgroundBase, wx.MDIParentFrame): > def __init__(self, aParent, aBgRsrc, init=None): > return BackgroundBase.__init__(self, aParent, aBgRsrc, > frameclass=wx.MDIParentFrame, init=init) > > class SashWindow(BackgroundBase, wx.SashLayoutWindow): > def __init__(self, aParent, aBgRsrc, init=None): > rsrc = resource.Resource(aBgRsrc).application.backgrounds[0] > return BackgroundBase.__init__(self, aParent, rsrc, > frameclass=wx.SashLayoutWindow, init=init) > # Dummy routine > def SetMenuBar(self, child): > return > # Dummy routine > def GetStatusBar(self): > return > ########## end of mod to model.py #######################-- > John Henry > > > > ----- Original Message ---- > > From: John Henry <ec...@ya...> > > To: pyt...@li... > > Sent: Wed, March 9, 2011 10:08:39 AM > > Subject: Added MDI support to Pythoncard (was MDI - childwindows within a > >window) > > > > I am happy to let you know that I succeeded in adding MDI support to > Pythoncard > > > > with only a few lines of modifications to the Background class in > model.py > > > > I made the Background class into a BackgroundBase class, and have the > >Background > > > > class subclass from the BackgroundBase class. > > > > Then I added a MDIParentBackground and MDIChildBackground which simply > force > > Background to subclass from wxMDIParentFrame and wxMDIChildFrame > respectively, > > > > instead of the wx.Frame class. Once I've done that, wxPython does the > rest > >of > > > > the work. > > > > ################ mod to model.py ###################### > > > > from wxPython.wx import wxMDIParentFrame, wxMDIChildFrame > > > > # Used to say: > > # class BackgroundBase(Scriptable, wx.Frame, event.EventSource): > > class BackgroundBase(Scriptable, event.EventSource): > > """ > > A window that contains Widgets. > > """ > > def __init__(self, aParent, aBgRsrc, frameclass=wx.Frame): > > ...<original code>... > > #Changed original code from invoking wx.Frame here to a method passed > down > > # First, call the base class' __init__ method to create the > frame > > frameclass.__init__(self, aParent, > > self.id, > > #self.name, > > aBgRsrc.title, > > position, > > aBgRsrc.size, > > style | wx.NO_FULL_REPAINT_ON_RESIZE, > > aBgRsrc.name) > > ...<rest of original code>... > > > > > > class Background(BackgroundBase, wx.Frame): > > def __init__(self, aParent, aBgRsrc): > > return BackgroundBase.__init__(self, aParent, aBgRsrc, > > frameclass=wx.Frame) > > > > class MDIParentBackground(BackgroundBase, wxMDIParentFrame): > > def __init__(self, aParent, aBgRsrc): > > return BackgroundBase.__init__(self, aParent, aBgRsrc, > > frameclass=wxMDIParentFrame) > > > > class MDIChildBackground(BackgroundBase, wxMDIChildFrame): > > def __init__(self, aParent, aBgRsrc): > > return BackgroundBase.__init__(self, aParent, aBgRsrc, > > frameclass=wxMDIChildFrame) > > > > ############## end of mod to model.py ######################### > > > > To use these two new classes, the code is remarkably unremarkable. The > parent > > > > code: > > > > ############# Parent ###################### > > #!/usr/bin/python > > > > """ > > __version__ = "$Revision: 1.5 $" > > __date__ = "$Date: 2004/04/30 16:26:12 $" > > """ > > > > from PythonCard import model > > > > MDI_rsrc=\ > > {'application':{'type':'Application', > > 'name':'Template', > > 'backgrounds': [ > > {'type':'Background', > > 'name':'bgTemplate', > > 'title':'Testing MDI Controls', > > 'size':(400, 300), > > 'style':['resizeable'], > > > > 'menubar': {'type':'MenuBar', > > 'menus': [ > > {'type':'Menu', > > 'name':'menuFile', > > 'label':'&File', > > 'items': [ > > {'type':'MenuItem', > > 'name':'menuFileExit', > > 'label':'E&xit', > > 'command':'exit', > > }, > > ] > > }, > > {'type':'Menu', > > 'name':'menuOptions', > > 'label':'Options', > > 'items': [ > > {'type':'MenuItem', > > 'name':'menuOptionsOpenNew', > > 'label':'Open New\tAlt+N', > > 'command':'openNew', > > }, > > ] > > }, > > ] > > }, > > 'components': [ > > > > ] # end components > > } # end background > > ] # end backgrounds > > } } > > > > MyCW_rsrc=\ > > {'application':{'type':'Application', > > 'name':'Template', > > 'backgrounds': [ > > {'type':'Background', > > 'name':'bgTemplate', > > 'title':'Standard Template with File->Exit menu', > > 'size':(698, 517), > > 'style':['resizeable'], > > > > 'menubar': {'type':'MenuBar', > > 'menus': [ > > {'type':'Menu', > > 'name':'menuFile', > > 'label':'&File', > > 'items': [ > > {'type':'MenuItem', > > 'name':'menuFileExit', > > 'label':'E&xit', > > 'command':'exit', > > }, > > ] > > }, > > {'type':'Menu', > > 'name':'menuOptions', > > 'label':'Options', > > 'items': [ > > {'type':'MenuItem', > > 'name':'menuOptionsOpenNew', > > 'label':'Open New\tAlt+N', > > 'command':'openNew', > > }, > > ] > > }, > > ] > > }, > > 'components': [ > > > > {'type':'TextArea', > > 'name':'TextArea1', > > 'position':(20, 20), > > 'size':(651, 333), > > }, > > > > {'type':'Button', > > 'name':'Button1', > > 'position':(559, 376), > > 'label':'Button1', > > }, > > > > ] # end components > > } # end background > > ] # end backgrounds > > } } > > > > class MyBackground(model.MDIParentBackground): > > > > def on_initialize(self, event): > > # if you have any initialization > > # including sizer setup, do it here > > #MDI.on_initialize(self, event) > > pass > > def on_openNew_command ( self, event ): > > # Create a child window > > child = model.childWindow(self, MyCW, rsrc=MyCW_rsrc) > > > > if __name__ == '__main__': > > app = model.Application(MyBackground, None, MDI_rsrc) > > app.MainLoop() > > ############# End of Parent ###################### > > > > ############# Child ###################### > > class MyCW(model.MDIChildBackground): > > > > def on_initialize(self, event): > > self.parent = self.getParent() > > self.components.TextArea1.text='I am only a child.' > > def on_openNew_command ( self, event ): > > return self.parent.on_openNew_command ( event ) > > ############# End of Child ###################### > > > > That's it!!! > > > > Now I have to play around with resizer to see how that would work here. > > > > -- > > John Henry > > > > ------------------------------------------------------------------------------ > Create and publish websites with WebMatrix > Use the most popular FREE web apps or write code yourself; > WebMatrix provides all the features you need to develop and > publish your website. http://p.sf.net/sfu/ms-webmatrix-sf > > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > > -- Mark Carter, OCT markcarter.tel -- Mark Carter, OCT markcarter.tel |
From: John H. <ec...@ya...> - 2011-04-01 14:53:26
|
I am happy to report that I've succeeded in Pythoncardize the wx.SashLayoutWindow control of wxPython using similar technique to the MDI support I reported previously. Not sure if the screen capture attachment to this email will get stripped or not. If you don't see the screen shot, shout and I'll try to upload that somewhere. ########## mod to model.py ####################### class Background(BackgroundBase, wx.Frame): def __init__(self, aParent, aBgRsrc, init=None): return BackgroundBase.__init__(self, aParent, aBgRsrc, frameclass=wx.Frame, init=init) class MDIChildBackground(BackgroundBase, wx.MDIChildFrame): def __init__(self, aParent, aBgRsrc, init=None): return BackgroundBase.__init__(self, aParent, aBgRsrc, frameclass=wx.MDIChildFrame, init=init) class MDIParentBackground(BackgroundBase, wx.MDIParentFrame): def __init__(self, aParent, aBgRsrc, init=None): return BackgroundBase.__init__(self, aParent, aBgRsrc, frameclass=wx.MDIParentFrame, init=init) class SashWindow(BackgroundBase, wx.SashLayoutWindow): def __init__(self, aParent, aBgRsrc, init=None): rsrc = resource.Resource(aBgRsrc).application.backgrounds[0] return BackgroundBase.__init__(self, aParent, rsrc, frameclass=wx.SashLayoutWindow, init=init) # Dummy routine def SetMenuBar(self, child): return # Dummy routine def GetStatusBar(self): return ########## end of mod to model.py #######################-- John Henry ----- Original Message ---- > From: John Henry <ec...@ya...> > To: pyt...@li... > Sent: Wed, March 9, 2011 10:08:39 AM > Subject: Added MDI support to Pythoncard (was MDI - childwindows within a >window) > > I am happy to let you know that I succeeded in adding MDI support to Pythoncard > > with only a few lines of modifications to the Background class in model.py > > I made the Background class into a BackgroundBase class, and have the >Background > > class subclass from the BackgroundBase class. > > Then I added a MDIParentBackground and MDIChildBackground which simply force > Background to subclass from wxMDIParentFrame and wxMDIChildFrame respectively, > > instead of the wx.Frame class. Once I've done that, wxPython does the rest >of > > the work. > > ################ mod to model.py ###################### > > from wxPython.wx import wxMDIParentFrame, wxMDIChildFrame > > # Used to say: > # class BackgroundBase(Scriptable, wx.Frame, event.EventSource): > class BackgroundBase(Scriptable, event.EventSource): > """ > A window that contains Widgets. > """ > def __init__(self, aParent, aBgRsrc, frameclass=wx.Frame): > ...<original code>... > #Changed original code from invoking wx.Frame here to a method passed down > # First, call the base class' __init__ method to create the frame > frameclass.__init__(self, aParent, > self.id, > #self.name, > aBgRsrc.title, > position, > aBgRsrc.size, > style | wx.NO_FULL_REPAINT_ON_RESIZE, > aBgRsrc.name) > ...<rest of original code>... > > > class Background(BackgroundBase, wx.Frame): > def __init__(self, aParent, aBgRsrc): > return BackgroundBase.__init__(self, aParent, aBgRsrc, > frameclass=wx.Frame) > > class MDIParentBackground(BackgroundBase, wxMDIParentFrame): > def __init__(self, aParent, aBgRsrc): > return BackgroundBase.__init__(self, aParent, aBgRsrc, > frameclass=wxMDIParentFrame) > > class MDIChildBackground(BackgroundBase, wxMDIChildFrame): > def __init__(self, aParent, aBgRsrc): > return BackgroundBase.__init__(self, aParent, aBgRsrc, > frameclass=wxMDIChildFrame) > > ############## end of mod to model.py ######################### > > To use these two new classes, the code is remarkably unremarkable. The parent > > code: > > ############# Parent ###################### > #!/usr/bin/python > > """ > __version__ = "$Revision: 1.5 $" > __date__ = "$Date: 2004/04/30 16:26:12 $" > """ > > from PythonCard import model > > MDI_rsrc=\ > {'application':{'type':'Application', > 'name':'Template', > 'backgrounds': [ > {'type':'Background', > 'name':'bgTemplate', > 'title':'Testing MDI Controls', > 'size':(400, 300), > 'style':['resizeable'], > > 'menubar': {'type':'MenuBar', > 'menus': [ > {'type':'Menu', > 'name':'menuFile', > 'label':'&File', > 'items': [ > {'type':'MenuItem', > 'name':'menuFileExit', > 'label':'E&xit', > 'command':'exit', > }, > ] > }, > {'type':'Menu', > 'name':'menuOptions', > 'label':'Options', > 'items': [ > {'type':'MenuItem', > 'name':'menuOptionsOpenNew', > 'label':'Open New\tAlt+N', > 'command':'openNew', > }, > ] > }, > ] > }, > 'components': [ > > ] # end components > } # end background > ] # end backgrounds > } } > > MyCW_rsrc=\ > {'application':{'type':'Application', > 'name':'Template', > 'backgrounds': [ > {'type':'Background', > 'name':'bgTemplate', > 'title':'Standard Template with File->Exit menu', > 'size':(698, 517), > 'style':['resizeable'], > > 'menubar': {'type':'MenuBar', > 'menus': [ > {'type':'Menu', > 'name':'menuFile', > 'label':'&File', > 'items': [ > {'type':'MenuItem', > 'name':'menuFileExit', > 'label':'E&xit', > 'command':'exit', > }, > ] > }, > {'type':'Menu', > 'name':'menuOptions', > 'label':'Options', > 'items': [ > {'type':'MenuItem', > 'name':'menuOptionsOpenNew', > 'label':'Open New\tAlt+N', > 'command':'openNew', > }, > ] > }, > ] > }, > 'components': [ > > {'type':'TextArea', > 'name':'TextArea1', > 'position':(20, 20), > 'size':(651, 333), > }, > > {'type':'Button', > 'name':'Button1', > 'position':(559, 376), > 'label':'Button1', > }, > > ] # end components > } # end background > ] # end backgrounds > } } > > class MyBackground(model.MDIParentBackground): > > def on_initialize(self, event): > # if you have any initialization > # including sizer setup, do it here > #MDI.on_initialize(self, event) > pass > def on_openNew_command ( self, event ): > # Create a child window > child = model.childWindow(self, MyCW, rsrc=MyCW_rsrc) > > if __name__ == '__main__': > app = model.Application(MyBackground, None, MDI_rsrc) > app.MainLoop() > ############# End of Parent ###################### > > ############# Child ###################### > class MyCW(model.MDIChildBackground): > > def on_initialize(self, event): > self.parent = self.getParent() > self.components.TextArea1.text='I am only a child.' > def on_openNew_command ( self, event ): > return self.parent.on_openNew_command ( event ) > ############# End of Child ###################### > > That's it!!! > > Now I have to play around with resizer to see how that would work here. > > -- > John Henry > |
From: pmarie-dit-dalet <phi...@ac...> - 2011-03-16 10:28:12
|
#! /usr/bin/python # -*- coding: utf-8 -*- from matplotlib import rcParams rcParams['font.family'] = 'sans-serif' rcParams['font.sans-serif'] = ['Tahoma'] from PythonCard import dialog, graphic, log, model import matplotlib.mathtext as mathtext import matplotlib as mpl import locale,os,sys import time import ConfigParser import codecs import locale import threading from scipy import * from scipy.optimize import fsolve import wx, wx.html from wx import ScreenDC, EmptyBitmap, MemoryDC,NullBitmap VER="0.8" reload(sys) sys.setdefaultencoding('utf-8') localcoding=locale.getdefaultlocale()[1] aboutText = u"""<p><img style="width: 96px; height: 96px;" alt=""src="ava.png"><br> <br>Avancement.py V %(version)s <br> écrit en python<br> <br>DALET Philippe<br>Laboratoire Physique-Chimie<br>avenue pezet<br>46100 FIGEAC<br>FRANCE<br><br> <a href="mailto:phi...@ac...?subject=Evenement">phi...@ac...</a><br><br> <a href="http://sourceforge.net/projects/gpib82357a/">http://sourceforge.net/projects/gpib82357a/</a></p>""" class LaTex: def __init__(self, rawText, filename): self.laTexParser = mathtext.MathTextParser('Bitmap') mpl.rcParams['mathtext.default'] = 'rm' self.laTexParser.to_png(filename, rawText, color='black', dpi=120, fontsize=8) class MyTimer: def __init__(self, tempo, target, args= [], kwargs={}): self._target = target self._args = args self._kwargs = kwargs self._tempo = tempo def _run(self): self._timer = threading.Timer(self._tempo, self._run) self._timer.start() self._target(*self._args, **self._kwargs) def start(self): self._timer = threading.Timer(self._tempo, self._run) self._timer.start() def stop(self): self._timer.cancel() class HtmlWindow(wx.html.HtmlWindow): def __init__(self, parent, id, size=(600,400)): wx.html.HtmlWindow.__init__(self,parent, id, size=size) if "gtk2" in wx.PlatformInfo: self.SetStandardFonts() def OnLinkClicked(self, link):wx.LaunchDefaultBrowser(link.GetHref()) class AboutBox(wx.Dialog): def __init__(self): wx.Dialog.__init__(self, None, -1, 'Au sujet de', style=wx.DEFAULT_DIALOG_STYLE|wx.THICK_FRAME|wx.RESIZE_BORDER|wx.TAB_TRAVERSAL) hwin = HtmlWindow(self, -1, size=(400,1200)) vers = {} vers["version"] = VER hwin.SetPage(aboutText % vers) btn = hwin.FindWindowById(wx.ID_OK) irep = hwin.GetInternalRepresentation() hwin.SetSize((irep.GetWidth()+25, irep.GetHeight()+10)) self.SetClientSize(hwin.GetSize()) self.CentreOnParent(wx.BOTH) self.SetFocus() class MyBackground(model.Background): def on_initialize(self,event): # config self.project=u"" if (len(sys.argv) == 2): if (os.path.isfile(sys.argv[1]) == True): self.project=sys.argv[1].decode(localcoding) self.ini=ConfigParser.ConfigParser() self.ini.readfp(open('avancement.ini')) if (self.project==u""): st= self.ini.get('settings','project').decode('utf-8') if (os.path.isfile( self.ini.get('settings','project').decode('utf-8') ) == True): self.project=self.ini.get('settings','project').decode('utf-8') else: self.project=u"avancement.ava" self.Print (u"Projet %s chargé" %self.project) self.prj=ConfigParser.ConfigParser() self.prj.readfp(open(self.project)) self.nA=self.prj.get('settings','nA') ; self.components.nA.SetValue(self.nA) self.nB=self.prj.get('settings','nB') ; self.components.nB.SetValue(self.nB) self.nC=self.prj.get('settings','nC') ; self.components.nC.SetValue(self.nC) self.nD=self.prj.get('settings','nD') ; self.components.nD.SetValue(self.nD) self.K =self.prj.get('settings','k') ; self.components.K.SetValue(self.K) self.strA =self.prj.get('settings','strA') ; self.A=self.GenerateImage(self.strA,'A') self.strB =self.prj.get('settings','strB') ; self.B=self.GenerateImage(self.strB,'B') self.strC =self.prj.get('settings','strC') ; self.C=self.GenerateImage(self.strC,'C') self.strD =self.prj.get('settings','strD') ; self.D=self.GenerateImage(self.strD,'D') self.strE =self.prj.get('settings','strE') ; self.E=self.GenerateImage(self.strE,'E') self.V = self.prj.get('settings','V') self.solution=self.prj.get('settings','solution') self.titre = self.prj.get('settings','titre').decode('utf-8') self.Update() #debug def OnKeyPress (self, evt): print ('hello') def Print (self, str):self.components.console.appendText(str+'\r\n') def GenerateImage(self, str, k): m = LaTex("$"+str+"$","./images/image"+k+".png") if (k=='A'): self.components.ImageButtonA._setFile (self.components.ImageButtonA._getFile ()) self.components.ImageButtonA._setBitmap( self.components.ImageButtonA._getBitmap() ) elif (k=='B'): self.components.ImageButtonB._setFile (self.components.ImageButtonB._getFile ()) self.components.ImageButtonB._setBitmap( self.components.ImageButtonB._getBitmap() ) elif (k=='C'): self.components.ImageButtonC._setFile (self.components.ImageButtonC._getFile ()) self.components.ImageButtonC._setBitmap( self.components.ImageButtonC._getBitmap() ) elif (k=='D'): self.components.ImageButtonD._setFile (self.components.ImageButtonD._getFile ()) self.components.ImageButtonD._setBitmap( self.components.ImageButtonD._getBitmap() ) else : self.components.ImageButtonE._setFile (self.components.ImageButtonE._getFile ()) self.components.ImageButtonE._setBitmap( self.components.ImageButtonE._getBitmap() ) if (str[0].isdigit()==False): if (str[0].isdigit()=='.'): return '0' else: return '1' else: return str[0] def on_ImageButtonA_mouseClick(self, event): result = dialog.textEntryDialog(self, u'Entrer le nom en LAtex',u'Espèce chimique', self.strA) if (result.accepted==True): self.strA = result.text; self.A=self.GenerateImage(self.strA,'A') self.Update() def on_ImageButtonB_mouseClick(self, event): result = dialog.textEntryDialog(self, u'Entrer le nom en LAtex',u'Espèce chimique', self.strB) if (result.accepted==True): self.strB = result.text; self.B=self.GenerateImage(self.strB,'B') self.Update() def on_ImageButtonC_mouseClick(self, event): result = dialog.textEntryDialog(self, u'Entrer le nom en LAtex',u'Espèce chimique', self.strC) if (result.accepted==True): self.strC = result.text; self.C=self.GenerateImage(self.strC,'C') self.Update() def on_ImageButtonD_mouseClick(self, event): result = dialog.textEntryDialog(self, u'Entrer le nom en LAtex',u'Espèce chimique', self.strD) if (result.accepted==True): self.strD = result.text; self.D=self.GenerateImage(self.strD,'D') self.Update() def on_ImageButtonE_mouseClick(self, event): result = dialog.textEntryDialog(self, u'Entrer le texte en LAtex',u' = ', self.strE) if (result.accepted==True): self.strE = result.text; self.E=self.GenerateImage(self.strE,'E') self.Update() def Refresh(self): self.nA = self.components.nA.GetValue(); self.prj.set('settings','nA',self.nA) self.nB = self.components.nB.GetValue(); self.prj.set('settings','nB',self.nB) self.nC = self.components.nC.GetValue(); self.prj.set('settings','nC',self.nC) self.nD = self.components.nD.GetValue(); self.prj.set('settings','nD',self.nD) self.K = self.components.K.GetValue(); self.prj.set('settings','K',self.K) self.prj.set('settings','strA',self.strA) self.prj.set('settings','strB',self.strB) self.prj.set('settings','strC',self.strC) self.prj.set('settings','strD',self.strD) self.prj.set('settings','strE',self.strE) self.prj.set('settings','V' ,self.V) self.prj.set('settings','titre',self.titre) self.prj.set('settings','solution',self.solution) self.ini.set('settings','project',self.project) def func(self,x): A=int(self.A);B=int(self.B);C=int(self.C);D=int(self.D) V=float(self.V);K=float(self.K) nA=float(self.nA);nB=float(self.nB);nC=float(self.nC);nD=float(self.nD) ch1="_{(l)}";ch2="_{(s)}";ch3="_{(g)}" if (ch1 in self.strA or ch2 in self.strA or ch3 in self.strA): A=0 if (ch1 in self.strB or ch2 in self.strB or ch3 in self.strB): B=0 if (ch1 in self.strC or ch2 in self.strC or ch3 in self.strC): C=0 if (ch1 in self.strD or ch2 in self.strD or ch3 in self.strD): D=0 return ( (nA-A*x)**A ) * ( (nB-B*x)**B ) - ( (nC+C*x)**C )*( (nD+D*x)** D ) * (V**(A+B-C-D)) / K def Quotient(self): A=int(self.A);B=int(self.B);C=int(self.C);D=int(self.D) V=float(self.V);K=float(self.K) nA=float(self.nA);nB=float(self.nB);nC=float(self.nC);nD=float(self.nD) ch1="_{(s)}";ch2="_{(g)}" if (ch1 in self.strA or ch2 in self.strA): A=0 if (ch1 in self.strB or ch2 in self.strB) : B=0 if (ch1 in self.strC or ch2 in self.strC): C=0 if (ch1 in self.strD or ch2 in self.strD): D=0 if (self.solution=="1"): ch3="H_{2}O_{(l)}" if (ch3 in self.strA): A=0 if (ch3 in self.strB): B=0 if (ch3 in self.strC): C=0 if (ch3 in self.strD): D=0 ch3="H^{+}"; ch4 ="HO^{-}" if (ch3 in self.strE or ch4 in self.strE): # milieu acide ou basique E=int(self.E) nE=1.0 #valeur par defaut return (nC**C)*(nD**D)/( (nA**A)*(nB**B)*(nE**E)) * (V**(A+B-C-D)) return (nC**C)*(nD**D)/( (nA**A)*(nB**B) ) * (V**(A+B-C-D)) def on_nA_loseFocus(self, event): self.nA = self.components.nA.GetValue() ; self.Update() def on_nB_loseFocus(self, event): self.nB = self.components.nB.GetValue() ; self.Update() def on_nC_loseFocus(self, event): self.nC = self.components.nC.GetValue() ; self.Update() def on_nD_loseFocus(self, event): self.nD = self.components.nD.GetValue() ; self.Update() def on_K_loseFocus (self, event): self.K = self.components.K.GetValue() ; self.Update() def Form(self, a): if (a==0.): return ("%1.1f") elif(a <0.001): return ("1.2E") else: return ("%1.3f") def Update (self): xf = fsolve(self.func,0.) if (xf <0): self.Print (u"Error Equation Solving"); xf = 0.0 str = "x = %1.6f mol" %(xf) self.components.Xf.SetValue(str) if (self.A=='1'): str="%1.6f - x" %(float(self.nA)) else: str="%1.6f - %s.x" %(float(self.nA),self.A) str1="%1.6f mol" %(float(self.nA)-int(self.A)*xf) self.components.nAC.SetValue(str) self.components.nAE.SetValue(str1) if (self.B=='1'): str="%1.6f - x" %(float(self.nB)) else: str="%1.6f - %s.x" %(float(self.nB),self.B) str1="%1.6f mol" %(float(self.nB)-int(self.B)*xf) self.components.nBC.SetValue(str) self.components.nBE.SetValue(str1) if (self.C=='1'): str="%1.6f + x" %(float(self.nC)) else: str="%1.6f + %s.x" %(float(self.nC),self.C) str1="%1.6f mol" %(float(self.nC)+int(self.C)*xf) self.components.nCC.SetValue(str) self.components.nCE.SetValue(str1) if (self.D=='1'): str="%1.6f + x" %(float(self.nD)) else: str="%1.6f + %s.x" %(float(self.nD),self.D) str1="%1.6f mol" %(float(self.nD)+int(self.D)*xf) self.components.nDC.SetValue(str) self.components.nDE.SetValue(str1) xmax1=float(self.nA)/int(self.A) xmax2=float(self.nB)/int(self.B) if (xmax1<xmax2): xmax=xmax1 self.components.nAM.SetValue("0.000000 mol") val=float(self.nB) - int(self.B)*xmax if (val <1.0): str= '%1.6f mol' %val else: str= '%1.6f mol' %val self.components.nBM.SetValue(str) else: xmax=xmax2 self.components.nBM.SetValue("0.000000 mol") val=float(self.nA) - int(self.A)*xmax if (val <1.0): str= '%1.6f mol' %val else: str= '%1.6f mol' %val self.components.nAM.SetValue(str) str = "x = %1.6f mol" %(xmax) self.components.Xmax.SetValue(str) val=float(self.nC) + int(self.C)*xmax if (val <1.0): str= '%1.6f mol' %val else: str= '%2.6f mol' %val self.components.nCM.SetValue(str) val=float(self.nD) + int(self.D)*xmax if (val <1.0): str= '%1.6f mol' %val else: str= '%2.6f mol' %val self.components.nDM.SetValue(str) V=float(self.V) self.Print (u"Vtotal= %3.3f L" %V ) Qri=self.Quotient() self.Print (u"Quotient de réation initiale Qr,i= %2.9f" %Qri) self.Print (u"Constante d'équilibre K= %s" %self.K) if (float(self.K)>Qri): self.Print (u"Evolution du système chimique dans le sens direct") else: self.Print (u"Evolution du système chimique dans le sens inverse") self.Print (u"xf= %f mol" %xf) self.Print (u"xmax= %f mol" %xmax) self.Print (u"taux d'avancement final= %2.1f %%" %(xf/xmax*100)) chaine="H_{3}O^{+}" if (chaine in self.strA): pH=-log10( (float(self.nA)-int(self.A)*xf)/V);self.Print (u"pH = %2.2f" %(pH)) if (chaine in self.strB): pH=-log10( (float(self.nB)-int(self.B)*xf)/V);self.Print (u"pH = %2.2f" %(pH)) if (chaine in self.strC): pH=-log10( (float(self.nC)+int(self.C)*xf)/V);self.Print (u"pH = %2.2f" %(pH)) if (chaine in self.strD): pH=-log10( (float(self.nD)+int(self.D)*xf)/V);self.Print (u"pH = %2.2f" %(pH)) chaine="HO^{-}" if (chaine in self.strA): pH=14+log10( (float(self.nA)-int(self.A)*xf)/V);self.Print (u"pH = %2.2f" %(pH)) if (chaine in self.strB): pH=14+log10( (float(self.nB)-int(self.B)*xf)/V);self.Print (u"pH = %2.2f" %(pH)) if (chaine in self.strC): pH=14+log10( (float(self.nC)+int(self.C)*xf)/V);self.Print (u"pH = %2.2f" %(pH)) if (chaine in self.strD): pH=14+log10( (float(self.nD)+int(self.D)*xf)/V);self.Print (u"pH = %2.2f" %(pH)) self.SetTitle(u"Tableau d'avancement - %s" %self.titre) def on_menuAbout_select(self, event): dlg = AboutBox() dlg.ShowModal() dlg.Destroy() def on_menuSolution_select(self, event): dlg = wx.MessageDialog( None,u"En solution aqueuse", "", wx.YES_NO | wx.ICON_QUESTION) result = dlg.ShowModal() == wx.ID_YES if (result ==True): self.solution="1" else: self.solution="0" dlg.Destroy() def on_menuHelp_select(self, event): msg=u""" * Cliquez sur les coefficients stoechiométriques, K la constante d'équilibre et les quantités de matière initiales afin de pouvoir les modifier (couleur bleue) * Cliquez sur les formules des espèces chimiques et entrez la formule en LAtex (Voir Menu : LAtex aide) * Dans le menu Fichier, n'oubliez pas d'entrer le volume total de la solution pour calculer correctement l'équilibre. * Au dessus du "=" de la transformation chimique il y a un bouton type image permettant d'inscrire un texte en LAtex comme 6H+ (ou 2HO-) [H+] est fixé par défaut pour le calcul de Qr. * Pour toute réaction où l'eau est un réactif (ex hydrolyse) ne pas mettre la réaction en solution (Menu fichier: Solution aqueuse ?) * dans le dossier \database, des fiches de calcul .sm (format smathstudio) vous permettent de calculer les quantités de matière. D'autres fichiers projet .ava sont présents. """ dialog.scrolledMessageDialog(self, msg, u"Aide") def on_menuLAtex_select(self, event): msg=u""" _ signifie un indice. Le texte correspondant à l'indice doit être placé entre les crochets {} ex: méthane CH_{4} ^ signifie exposant. Le texte correspondant à l'exposant doit être placé entre les crochets {} ex: ion oxonium 2\ H_{3}O^{+}_{(aq)} \ signifie espace !! laissez un blanc après \ ex: milieu\ acide * Cliquer sur le symbole (qui est en réalité un Bouton de type Image) et entrer le texte en LAtex: une image sera alors générée """ dialog.scrolledMessageDialog(self, msg, u"Latex Aide") def Quit(self): self.Refresh() fpi=open('avancement.ini','w'); self.ini.write(fpi) fpp=open(self.project,"w"); self.prj.write(fpp) self.Close() def on_Quit_mouseClick(self, event): self.Quit() def on_menuFileExit_select(self, event): self.Quit() def on_menuJPG_select(self, event): result = dialog.saveFileDialog(wildcard=u"Jpeg fichiers (*.jpg)|*.jpg") if (result.accepted==True): if result.paths[0].rfind('.jpg') ==-1: result.paths[0]+='.jpg' if sys.platform == 'win32': self.Tim = MyTimer(2.0, self.PrintScr, [result.paths[0]]) self.Tim.start() else: self.PrintScr(result.paths[0]) def on_menuSaveProject_select(self, event): result = dialog.saveFileDialog(wildcard=u"Ava fichiers (*.ava)|*.ava") if (result.accepted==True): self.Refresh() self.project=result.paths[0] fp=open(self.project,"w"); self.prj.write(fp) self.Print (u"Projet %s sauvé" %self.project) def on_menuVolume_select(self, event): result = dialog.textEntryDialog(self, u'Entrer le volume en L',u' Volume total de la solution ', self.V) if (result.accepted==True): self.V = result.text self.Print (u"Vtotal= %f L" %float(self.V) ) def on_menuTitle_select(self, event): result = dialog.textEntryDialog(self, u'Entrer le Titre',u' Titre de la réaction ', self.titre.decode('utf-8')) if (result.accepted==True): self.titre = result.text self.SetTitle(u"Tableau d'avancement - %s" %self.titre) def on_cls_select(self, event): self.components.console.clear() def on_menuLoadProject_select(self, event): result = dialog.openFileDialog(wildcard=u"Ava fichiers (*.ava)|*.ava") if (result.accepted==True): self.prj.readfp(open(result.paths[0])) self.project=result.paths[0] self.components.console.clear() self.nA=self.prj.get('settings','nA') ; self.components.nA.SetValue(self.nA) self.nB=self.prj.get('settings','nB') ; self.components.nB.SetValue(self.nB) self.nC=self.prj.get('settings','nC') ; self.components.nC.SetValue(self.nC) self.nD=self.prj.get('settings','nD') ; self.components.nD.SetValue(self.nD) self.K =self.prj.get('settings','K') ; self.components.K.SetValue(self.K) self.strA =self.prj.get('settings','strA') ; self.A=self.GenerateImage(self.strA,'A') self.strB =self.prj.get('settings','strB') ; self.B=self.GenerateImage(self.strB,'B') self.strC =self.prj.get('settings','strC') ; self.C=self.GenerateImage(self.strC,'C') self.strD =self.prj.get('settings','strD') ; self.D=self.GenerateImage(self.strD,'D') self.strE =self.prj.get('settings','strE') ; self.E=self.GenerateImage(self.strE,'E') self.titre = self.prj.get('settings','titre') self.solution=self.prj.get('settings','solution') self.V = self.prj.get('settings','V') self.Print (u"Projet %s chargé" %self.project) self.Update() def PrintScr(self,str): if sys.platform == 'win32': self.Tim.stop() else: time.sleep( 5 ) rect = self.GetRect() if sys.platform == 'linux2': client_x, client_y = self.ClientToScreen((0, 0)) border_width = client_x - rect.x title_bar_height = client_y - rect.y rect.width += (border_width * 2) rect.height += title_bar_height + border_width dcScreen = wx.ScreenDC() #Create a DC for the whole screen area bmp = wx.EmptyBitmap(rect.width, rect.height) memDC = wx.MemoryDC() #Create a memory DC that will be used for actually taking the screenshot #Tell the memory DC to use our Bitmap #all drawing action on the memory DC will go to the Bitmap now memDC.SelectObject(bmp) #Blit (in this case copy) the actual screen on the memory DC #and thus the Bitmap memDC.Blit( 0, 0, rect.width, rect.height, dcScreen, rect.x, rect.y ) #Select the Bitmap out of the memory DC by selecting a new #uninitialized Bitmap memDC.SelectObject(wx.NullBitmap) img = bmp.ConvertToImage() img.SaveFile(str, wx.BITMAP_TYPE_JPEG) self.Print(u"Fichier %s généré" %str) if __name__ == '__main__': app = model.Application(MyBackground) app.MainLoop() |
From: Teuvo E. <te...@gm...> - 2011-03-11 12:03:32
|
Hi Alec, self.backgroundColor = (101, 139, 215) should do the trick, -Teuvo 2011/3/11 Alec Bennett <wry...@gm...> > I'm wondering if anyone might know how to set the background color of a > PythonCard window? Something akin to the wxPython method of > SetBackgroundColour("white")? > > > > > ------------------------------------------------------------------------------ > Colocation vs. Managed Hosting > A question and answer guide to determining the best fit > for your organization - today and in the future. > http://p.sf.net/sfu/internap-sfd2d > _______________________________________________ > Pythoncard-users mailing list > Pyt...@li... > https://lists.sourceforge.net/lists/listinfo/pythoncard-users > > |
From: Kristian R. <kri...@zi...> - 2011-03-11 11:04:32
|
Folks; sorry for hijacking this thread, but it seems to fit in here: Am Fri, 11 Mar 2011 02:05:05 -0800 schrieb Alec Bennett <wry...@gm...>: > I mostly use straight wxPython, but I have a few projects that are > still in PythonCard. I still love PythonCard for the simplicity, > especially for prototyping. Just out of curiosity, what is the current state of PythonCard? Looking at the website as well as the sourceforge page, it seems it has been quite a while ever since the last changes have happened in the source tree. Is the project still "alive"? Is it in some sort of "no news, good news" state of things? Cheers, K. |
From: Alec B. <wry...@gm...> - 2011-03-11 10:05:13
|
I mostly use straight wxPython, but I have a few projects that are still in PythonCard. I still love PythonCard for the simplicity, especially for prototyping. On Fri, Mar 11, 2011 at 1:53 AM, Andrew Spagnoletti <an...@in...>wrote: > Hi Alec, > > If I can share my experience I would recommend that you seriously consider > using wxPython rather than PythonCard. If you perceive not having a GUI a > problem, once you get used to sizers you will find they > are extremely powerful and effective. I initially tried PythonCard but moved > to wxPython and have not regretted it. wxPython is wonderful; very much a > top-quality and living product with great support and excellent > documentation in the form of the book "wxPython in Action", co-authored by > its creator Robin Dunn. > > On Fri, Mar 11, 2011 at 11:33 AM, Alec Bennett <wry...@gm...> wrote: > >> I'm wondering if anyone might know how to set the background color of a >> PythonCard window? Something akin to the wxPython method of >> SetBackgroundColour("white")? >> >> >> >> >> ------------------------------------------------------------------------------ >> Colocation vs. Managed Hosting >> A question and answer guide to determining the best fit >> for your organization - today and in the future. >> http://p.sf.net/sfu/internap-sfd2d >> _______________________________________________ >> Pythoncard-users mailing list >> Pyt...@li... >> https://lists.sourceforge.net/lists/listinfo/pythoncard-users >> >> > > > -- > > Andrew Spagnoletti > > 082 557 7771 > > Nitric 021 409 7977 > > an...@in... // www.incidentMC.com <http://www.incidentmc.com/> > > The information contained in this email message may be confidential. If you > are not the intended recipient, any use, interference with, disclosure or > copying of this material is unauthorised and prohibited. Although this > message and any attachments are believed to be free of viruses, no > responsibility is accepted by Nitric for any loss or damage arising in any > way from receipt or use thereof. If you have received this message in error, > please notify us by return and delete the message and any attachments. > Further enquiries/returns can be sent to nic...@ni...<nic...@ni...> > > |