|
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
>
>
|