By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,245 Members | 1,118 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,245 IT Pros & Developers. It's quick & easy.

wxPython.Fit() is funky.

P: n/a
(Is this an appropriate place to ask wxPython questions?)

Here's some code (line breaks put in without testing them, I'm
kinda a newbie hope they're ok):

<busted.py>

from wxPython.wx import *

class MyFrame(wxFrame):
def __init__(self, size):
wxFrame.__init__(self, NULL, -1, "Test Window")
self.panel = wxPanel(self, -1, size = size)
print '\ninitial size of panel is:', \
self.panel.GetSize(), "and the window is:", \
self.GetSize()

self.Fit()
print 'after a Fit(), size of panel is:', \
self.panel.GetSize(), "and the window is:", \
self.GetSize()

print '\nIf I manually set the client size, it works:'
self.SetClientSize(size)
print '\tsize of panel is:', self.panel.GetSize(), \
"and the window is:", self.GetSize()

print '\nBut isn\'t this what the Fit call is ' + \
'supposed to do?'
if __name__ == "__main__":
print '\n*********************************************** ****'
print 'The panel should be 640x480, and the window ' +
'should fit it tightly.'
frame = MyFrame((640, 480))
frame.Destroy()
print '************************************************* ****'

***

Ok, so this code here, when executed in WinXP, prints different
values after thet self.Fit() call than I want. I set the panel
size explicitly, and then self.Fit() changes the dimensions of
both self *and* self.panel. Why? Wouldn't the documentation
indicate that it only changes the 'self' parameter passed in to
Fit()? That's what it says to me:

: wxWindow::Fit
: virtual void Fit()
:
: Sizes the window so that it fits around its subwindows. This
: function won't do anything if there are no subwindows.

It doesn't seem to imply that child windows will be changed to do
this fitting... Unfortunately, this behavior means that Fit() is
nearly useless for me. I just started doing this wx and Python
stuff, and every window that I create in my recent project needs
to be sized based on the content. The way Fit() works is making
me actually compute the size of the content myself. It's not
hard, but it is tedious when the library tells you that this
functionality is available.

Apologies if this is off-topic (responses/flames can be directed
straight to me if it is), and thanks for any help.

-tom!
Jul 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
Hello Tom,
Unfortunately, this behavior means that Fit() is
nearly useless for me. I just started doing this wx and Python
stuff, and every window that I create in my recent project needs
to be sized based on the content. The way Fit() works is making
me actually compute the size of the content myself. It's not
hard, but it is tedious when the library tells you that this
functionality is available.

Why don't you use sizers?
(http://www.lpthe.jussieu.fr/~zeitlin...htm#wxboxsizer)
They save you from doing all this stuff by yourself.

HTH.
Miki
Jul 18 '05 #2

P: n/a
Miki Tebeka wrote:
Unfortunately, this behavior means that Fit() is
nearly useless for me.


Why don't you use sizers?
(http://www.lpthe.jussieu.fr/~zeitlin...htm#wxboxsizer)
They save you from doing all this stuff by yourself.


In one case in particular, I have a panel that's the size I want,
and I want the frame to fit neatly around it. Seems like
overkill to use a sizer, especially when the documentation for
Fit() implies that it does what I want.

The panel doesn't contain any controls, and I "give" that window
to Pygame/SDL anyway so wx loses control of it. It starts out
the size I want.

-tom!
Jul 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.