* random joe, on 12.06.2010 01:40:
Hello all,
Hi this i my first post here. I would like to create a tkinter
toplevel window with a custom resize action based on a grid. From the
Tk docs it say you can do this but for the life of me i cannot figure
out how? In my app i wish for the main window to only resize in 20
pixel "jumps" (if you will). I have tried using the toplevel.grid()
and setgrid option and no luck!
## here is the tk doc page about setGrid
http://www.tcl.tk/man/tcl/TkLib/SetGrid.htm
## here is the Tkinter method from wm class
def wm_grid(self,
baseWidth=None, baseHeight=None,
widthInc=None, heightInc=None):
"""Instruct the window manager that this widget shall only be
resized on grid boundaries. WIDTHINC and HEIGHTINC are the
width and
height of a grid unit in pixels. BASEWIDTH and BASEHEIGHT are
the
number of grid units requested in Tk_GeometryRequest."""
return self._getints(self.tk.call(
'wm', 'grid', self._w,
baseWidth, baseHeight, widthInc, heightInc))
grid = wm_grid
## Here is my code.
from Tkinter import *
class TopWin(Tk):
def __init__(self):
Tk.__init__(self)#, setgrid=1)
#self.maxsize(width=50, height=50)
#self.minsize(width=1, height=1)
self.grid(10, 10, 20, 20)
topwin = TopWin()
topwin.mainloop()
Please help. I am going nuts trying to make this work for three hours
already :(
It seems that the 'grid' call only affects programmatic resizing, not user
resizing.
<example>
#Py3
from tkinter import *
class TopWin(Tk):
def __init__(self):
Tk.__init__( self )
self.geometry( "40x30" )
self.grid( 10, 10, 20, 20 )
topwin = TopWin()
topwin.mainloop()
</example>
Here the effective presentation area size is (seems to be) 400x300 pixels.
Cheers & hth.,
- Alf
--
blog at <url: http://alfps.wordpress.com>
--
http://mail.python.org/mailman/listinfo/python-list