Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > [wxPython] how to automatically resize a window?

Reply
Thread Tools

[wxPython] how to automatically resize a window?

 
 
Curzio Basso
Guest
Posts: n/a
 
      04-21-2004

Hi all,

I have a problem for which I wasn't able to find an answer anywhere
else, maybe someone can give me a hint...

I designed with XRCed a small GUI (the code is at the bottom of the
message) made up of a menu and a frame in which there are two panels,
placed by an horizontal sizer.

Now, what I would like to do is to be able to load an image and display
it on the left panel, automatically resizing the panel depending on the
image size (the code is at the end again). There are actually two problems:

1) if I load an image the panel is not resized automatically

2) if I resize the panel manually after having loaded the image, the DC
is not repainted. that is, the portion of the image which was invisible
is not painted

Is there anyone with a bit of time to explain me how to solve these
problems?

thanks, qrz

------------------ XRC ----------------------------

<?xml version="1.0" ?>
<resource>
<object class="wxFrame" name="MAIN">
<title>test</title>
<object class="wxBoxSizer">
<orient>wxHORIZONTAL</orient>
<object class="sizeritem">
<object class="wxPanel" name="IMAGE">
<size>100,100</size>
</object>
<border>5</border>
</object>
<object class="sizeritem">
<object class="wxPanel" name="CONTROLS">
<size>100,100</size>
</object>
<border>5</border>
</object>
</object>
</object>
<object class="wxMenuBar" name="MENU">
<object class="wxMenu" name="MENU_FILE">
<label>File</label>
<object class="wxMenuItem" name="MENU_FILE_OPEN">
<label>Open</label>
</object>
</object>
</object>
</resource>

---------------- PYTHON -----------------------------

from wxPython.wx import *
from wxPython.xrc import *
import Image

def pilToWx(pil):
image = wxEmptyImage(pil.size[0], pil.size[1])
image.SetData(pil.convert('RGB').tostring())
return image

class MyApp(wxApp):

def OnInit(self):
self.res = wxXmlResource("test.xrc")
self.InitFrame()
self.InitMenu()
self.InitEverythingElse()
self.image = None
return True

def InitFrame(self):
self.frame = self.res.LoadFrame(None, "MAIN")
self.ipanel = XRCCTRL(self.frame, "IMAGE")
EVT_PAINT(self.ipanel, self.OnPaint)
self.cpanel = XRCCTRL(self.frame, "CONTROLS")

def InitMenu(self):
self.menuBar = self.res.LoadMenuBar("MENU")
EVT_MENU(self.frame, XRCID("MENU_FILE_OPEN"), self.Open)
self.frame.SetMenuBar(self.menuBar)

def InitEverythingElse(self):
self.sizer = self.frame.GetSizer()
self.frame.SetAutoLayout(True)
self.sizer.Fit(self.frame)
self.sizer.SetSizeHints(self.frame)
self.frame.Show(1)
self.SetTopWindow(self.frame)

def Open(self, evt):
fd = wxFileDialog(self.frame, "Open image", "", "", \
"PNG image (*.png)|*.png|JPEG image
(*.jpg)|*.jpg", \
wxOPEN)
if fd.ShowModal() == wxID_OK:
im = Image.open(fd.GetPath())
self.image = pilToWx(im)
self.ipanel.SetSize(im.size)
self.ipanel.Refresh(True)
fd.Destroy()

def OnPaint(self, evt):
if self.image:
dc = wxPaintDC(self.ipanel)
dc.DrawBitmap(self.image.ConvertToBitmap(), 0,0)

def main():
app = MyApp(0)
app.MainLoop()

if __name__ == '__main__':
main()
 
Reply With Quote
 
 
 
 
David Fraser
Guest
Posts: n/a
 
      04-22-2004
Curzio Basso wrote:
>
> Hi all,
>
> I have a problem for which I wasn't able to find an answer anywhere
> else, maybe someone can give me a hint...
>
> I designed with XRCed a small GUI (the code is at the bottom of the
> message) made up of a menu and a frame in which there are two panels,
> placed by an horizontal sizer.
>
> Now, what I would like to do is to be able to load an image and display
> it on the left panel, automatically resizing the panel depending on the
> image size (the code is at the end again). There are actually two problems:
>
> 1) if I load an image the panel is not resized automatically
>
> 2) if I resize the panel manually after having loaded the image, the DC
> is not repainted. that is, the portion of the image which was invisible
> is not painted
>
> Is there anyone with a bit of time to explain me how to solve these
> problems?
>
> thanks, qrz


You probably want to go to the wxPython users mailing list for this (see
the links on the wxpython home page)

David
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
How to make Iframe automatically resize when window is resized? DL Javascript 1 12-10-2009 05:04 AM
FF extension to resize tabs? Teh Suck Firefox 2 12-28-2005 04:20 PM
How to resize all images sizes and coordinates of the images on resize browser rams.kakara@gmail.com ASP General 2 02-13-2005 09:03 AM
Pictures automatically resize in IE6 chris Computer Support 3 05-07-2004 05:26 PM



Advertisments