Changing control sizes at run-time

Thread Solved

Join Date: Feb 2007
Posts: 3
Reputation: Acolyte is an unknown quantity at this point 
Solved Threads: 0
Acolyte Acolyte is offline Offline
Newbie Poster

Changing control sizes at run-time

 
0
  #1
Feb 16th, 2007
Hello,

I have a simple script with 2 buttons positioned vertically within a sizer on a panel.

A button-click event attached to the top button changes the height of the top button. However, even though the height of the top button changes, the height of the bottom button does not automatically resize to accomodate the new height of the top button.

Adding self.myboxsizer.Layout() after I change the height of the button does not change the height of the bottom button, but only serves to revert the height of the top button to its original (unmodified) height.

How can I change the height of the top button and automatically resize the height of the bottom button?

[php]

#!/usr/bin/python


import wx


class AFrame(wx.Frame):
def __init__(self, *args, **kwargs):
wx.Frame.__init__(self, *args, **kwargs)

self.SetSize(wx.Size(300,400))

self.panel = wx.Panel(self)
self.button1 = wx.Button(self.panel, 1000, "Button1")
self.button1.Bind(wx.EVT_BUTTON, self.BtnClick)

self.button2 = wx.Button(self.panel, 1001, "Button2")

self.myboxsizer = wx.BoxSizer(wx.VERTICAL)
self.myboxsizer.Add(self.button1,0,wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT,30)
self.myboxsizer.Add(self.button2,1,wx.EXPAND|wx.ALL,30)

self.panel.SetSizer(self.myboxsizer)

def BtnClick(self,event):
self.button1.SetSize(wx.Size(-1,80))
#self.myboxsizer.Layout()



if __name__ == '__main__':
app = wx.App()
daframe = AFrame(None)
daframe.Show()
app.MainLoop()



[/php]

Any assistance will be appreciated. Thank you.
Reply With Quote Quick reply to this message  
Join Date: Jul 2005
Posts: 1,221
Reputation: bumsfeld will become famous soon enough bumsfeld will become famous soon enough 
Solved Threads: 137
bumsfeld's Avatar
bumsfeld bumsfeld is offline Offline
Nearly a Posting Virtuoso

Re: Changing control sizes at run-time

 
0
  #2
Feb 16th, 2007
For button1 use :
self.myboxsizer.Add(self.button1,0,wx.EXPAND|wx.ALL,30)
I works on Windows OS, Linux may behave differently.
Reply With Quote Quick reply to this message  
Join Date: Feb 2007
Posts: 3
Reputation: Acolyte is an unknown quantity at this point 
Solved Threads: 0
Acolyte Acolyte is offline Offline
Newbie Poster

Re: Changing control sizes at run-time

 
0
  #3
Feb 16th, 2007
Thanks bumsfeld.
Unfortunately the suggestion doesn't work on fedora 6.
Puzzled.
Last edited by Acolyte; Feb 16th, 2007 at 1:53 pm.
Reply With Quote Quick reply to this message  
Join Date: Feb 2007
Posts: 3
Reputation: Acolyte is an unknown quantity at this point 
Solved Threads: 0
Acolyte Acolyte is offline Offline
Newbie Poster

Re: Changing control sizes at run-time

 
0
  #4
Feb 17th, 2007
Solution discovered with a little help from friends on another post ...

You need to set the minimum size of the button so that the buttons are rendered with the desired dimensions by the controlling sizer on linux:

[php] def BtnClick(self,event):
newsize = wx.Size(-1,80)
self.button1.SetMinSize(newsize)
self.button1.SetSize(newsize)
self.myboxsizer.Layout()
[/php]
The above displays the buttons correctly on fc6.
Last edited by Acolyte; Feb 17th, 2007 at 7:33 am.
Reply With Quote Quick reply to this message  
Reply

This thread has been marked solved.
Perhaps start a new thread instead?
Message:



Similar Threads
Other Threads in the Python Forum
Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC