[Tutor] wxPython shaped window
Liam Clarke
cyresse at gmail.com
Mon Jul 4 00:55:50 CEST 2005
To totally not answer your question, check out -
pythoncard.sourceforge.net<http://pythoncard.sourceforge.net>
It's the Visual Basic Userform IDE of wxPython. :)
On 7/1/05, Adam Bark <adam.jtm30 at gmail.com> wrote:
>
> On 6/26/05, Adam Cripps <kabads at gmail.com> wrote:
> >
> > On 6/25/05, Adam Bark <adam.jtm30 at gmail.com> wrote:
> > > Thanks for the info Adam I just seem to be having a problem with the
> > panel
> > > size it greys out nearly all the image. Ideally I would like to make
> > the
> > > panel transparent but I can't work out how to do that.
> > >
> > >
> > > On 6/25/05, Adam Cripps < kabads at gmail.com> wrote:
> > > > On 6/25/05, Adam Bark < adam.jtm30 at gmail.com > wrote:
> > > > > Is it possible to put controls into a shaped window in wxPython. I
> > have
> > > > > tried putting a button on the demo and it becomes the exact size
> > and
> > > shape
> > > > > of the window. Also when I tried to bind it to an action it
> > wouldn't
> > > even
> > > > > start.
> > > > >
> > > > > Adam
> > > > >
> > > >
> > > > I'm working through something similar myself at the moment.
> > > >
> > > > Try adding a wx.Panel to the frame and then the button to the panel.
> > > > You can position them through pos parameter, but it should default
> > to
> > > > the top left of the panel and have a good size if you use
> > > > button.SetSize(button.GetBestSize())
> > > >
> > > > HTH
> > > >
> > > > Adam
> >
> > Adam - how much code do you have? Why not post it either here or the
> > wxpython-users list (to which I'm also subscribed) and we can take a
> > look.
> >
> > Adam
> >
> > --
> > http://www.monkeez.org
> > PGP key: 0x7111B833
>
>
> I tried posting to the wxpython-users list but I'm not sure it worked
> nobody replied anyway.
> Here's my test script:
>
> import wx
>
> class Frame(wx.Frame):
> def __init__(self):
> wx.Frame.__init__(self, None, -1, "Shaped Window",
> style =
> wx.FRAME_SHAPED
> | wx.SIMPLE_BORDER
> | wx.FRAME_NO_TASKBAR
> | wx.STAY_ON_TOP
> )
> self.hasShape = False
> self.delta = (0,0)
>
> self.Bind(wx.EVT_PAINT, self.OnPaint)
> self.Bind(wx.EVT_MOTION, self.OnMouseMove)
>
> self.bkground = wx.Bitmap("/home/adam/bkgrnd.gif", wx.BITMAP_TYPE_GIF)
> w, h = self.bkground.GetWidth(), self.bkground.GetHeight()
> self.SetClientSize((w, h))
> self.Bind(wx.EVT_WINDOW_CREATE, self.SetWindowShape)
> panel = Panel(self, w, h)
> panel.Show()
> dc = wx.ClientDC(self)
> dc.DrawBitmap(self.bkground, 0,0, True)
>
> def SetWindowShape(self, evt):
> # Use the bitmap's mask to determine the region
> r = wx.RegionFromBitmap(self.bkground)
> self.hasShape = self.SetShape(r)
>
> def OnPaint(self, event):
> dc = wx.PaintDC(self)
> dc.DrawBitmap(self.bkground, 0,0, True)
>
> def OnMouseMove(self, evt):
> if evt.Dragging() and evt.LeftIsDown():
> x, y = self.ClientToScreen(evt.GetPosition())
> fp = (x - self.delta[0], y - self.delta[1])
> self.Move(fp)
>
> class Panel(wx.Panel):
> def __init__(self, parent, width, height):
> wx.Panel.__init__(self, parent, -1, size=(width, height))
>
> button = wx.Button(self, -1, "hello")
> button.SetSize(button.GetBestSize())
> self.SetSize((width, height))
> #print dir(self)
>
> if __name__ == "__main__":
> app = wx.PySimpleApp()
> frame = Frame()
> frame.Show()
> app.MainLoop()
>
> Thanks.
> Adam.
> _______________________________________________
> Tutor maillist - Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>
>
--
'There is only one basic human right, and that is to do as you damn well
please.
And with it comes the only basic human duty, to take the consequences.'
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20050704/4efb2e05/attachment.htm
More information about the Tutor
mailing list