Hi,
Please excuse the number of postings coming from me - I'm using my weekend
time to write up a number of questions I've had for quite a while.
Often in my applications I have widgets that grow or shrink upon user
interaction. It can be a bit unsightly, however, after large widgets are
collapsed, leaving vast empty spaces in the window.
Is there a way to keep the toplevel window permanently at its minimum size,
respecting the allocation requests of its children but no larger? I've
tried resizing the window to (1, 1) inside every callback for widget
shrinking operations, but sometimes even that doesn't work, as demonstrated
in my code below.
If there is no easy way to do this now, I think it would make a good feature
for the next GTK version.
Karl
#!/usr/bin/python
from pygtk import require
require('2.0')
import gtk
class Shrinkable(gtk.Window):
def __init__(self):
gtk.Window.__init__( self, gtk.WINDOW_TOPLEVEL )
vbox = gtk.VBox(False)
self.add(vbox)
button = gtk.Button("Shrink wrap")
button.connect("clicked", self.shrinkwrap_window)
vbox.pack_start(button, False, False)
button = gtk.Button("Dummy button")
button.set_size_request(200, 200)
my_expander = gtk.Expander("Expander")
my_expander.add(button)
# my_expander.connect("activate", self.cb_expansion)
my_expander.connect("notify::expanded", self.cb_expansion)
vbox.pack_start(my_expander, False, False)
self.show_all()
def shrinkwrap_window(self, widget):
self.resize(1, 1)
def cb_expansion(self, expander, param_spec=None, user_data=None):
if expander.get_expanded():
print "expanded."
else:
print "collapsed."
self.shrinkwrap_window(expander)
if __name__ == "__main__":
application = Shrinkable()
gtk.main()
_______________________________________________
pygtk mailing list [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/