tkinter resize question
Resizing a tkinter window which contains a frame which contains a button widget, will not change the current size of the window, frame or button as recorded in their height and width attributes (at least not if they are resizable). What is the correct way to detect their current size? -- https://mail.python.org/mailman/listinfo/python-list
Re: tkinter resize question
On Friday, July 17, 2015 at 1:53:19 PM UTC-5, nickge...@gmail.com wrote: Resizing a tkinter window which contains a frame which contains a button widget, will not change the current size of the window, frame or button as recorded in their height and width attributes (at least not if they are resizable). What is the correct way to detect their current size? Ok, partially answering my own question: The geometry of the window will change (win.geometry()), but the changes do not appear to propagate to the retrieved width/height of the child widgets, frames, etc. Or am I incorrect with this? -- https://mail.python.org/mailman/listinfo/python-list
Re: tkinter resize question
On 7/17/2015 2:53 PM, nickgeova...@gmail.com wrote: Resizing a tkinter window which contains a frame which contains a button widget, will not change the current size of the window, frame or button as recorded in their height and width attributes (at least not if they are resizable). Post the code and experiments performed that leads you to believe the above. What is the correct way to detect their current size? It is hard to fix code not posted. -- Terry Jan Reedy -- https://mail.python.org/mailman/listinfo/python-list
Re: tkinter resize question
On 7/17/2015 9:31 PM, nickgeova...@gmail.com wrote: On Friday, July 17, 2015 at 5:55:19 PM UTC-5, Terry Reedy wrote: On 7/17/2015 2:53 PM, nickgeova...@gmail.com wrote: Resizing a tkinter window which contains a frame which contains a button widget, will not change the current size of the window, frame or button as recorded in their height and width attributes (at least not if they are resizable). Post the code and experiments performed that leads you to believe the above. It's really boring but here you are: [ngeo@localhost src]$ python3 Python 3.4.2 (default, Dec 20 2014, 13:53:33) [GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux Type help, copyright, credits or license for more information. import tkinter win=tkinter.Tk() frame=tkinter.Frame(win, bg=blue, width=200, height=200) butt1=tkinter.Button(fg=green, bg=black) frame.grid() butt1.grid() butt1[width] 0 butt1[height] 0 win[width] 0 win[height] 0 I believe these configuration settings should be interpreted a 'initial size' (if not default) or 'desired size' or possibly min or max size, depending on the grid or pack settings. -- Terry Jan Reedy -- https://mail.python.org/mailman/listinfo/python-list
Re: tkinter resize question
On 7/17/15 12:17 PM, nickgeova...@gmail.com wrote: On Friday, July 17, 2015 at 1:53:19 PM UTC-5, nickge...@gmail.com wrote: Resizing a tkinter window which contains a frame which contains a button widget, will not change the current size of the window, frame or button as recorded in their height and width attributes (at least not if they are resizable). What is the correct way to detect their current size? Ok, partially answering my own question: The geometry of the window will change (win.geometry()), but the changes do not appear to propagate to the retrieved width/height of the child widgets, frames, etc. Or am I incorrect with this? I'm not seeing it. If I try the following script I see that resizing the widget does update frame.winfo_width() and winfo_height. (I also see that the requested width and height are ignored; you can omit those). -- Russell #!/usr/bin/env python import Tkinter root = Tkinter.Tk() frame = Tkinter.Frame(root, width=100, height=50) frame.pack(expand=True, fill=both) def doReport(*args): print frame actualwidth=%s, height=%s % (frame.winfo_width(), frame.winfo_height()) print frame requested width=%s, height=%s % (frame.winfo_reqwidth(), frame.winfo_reqheight()) button = Tkinter.Button(frame, text=Report, command=doReport) button.pack() root.mainloop() -- https://mail.python.org/mailman/listinfo/python-list
Re: tkinter resize question
On Friday, July 17, 2015 at 2:52:56 PM UTC-5, Russell Owen wrote: I'm not seeing it. If I try the following script I see that resizing the widget does update frame.winfo_width() and winfo_height. (I also see that the requested width and height are ignored; you can omit those). I wonder if the OP is trying to query the sizes from inside an event handler? Hmm. But since he failed to explain the problem coherently, and also failed to provide a code sample, i'm not willing to exert any effort beyond that. -- https://mail.python.org/mailman/listinfo/python-list
Re: tkinter resize question
On Friday, July 17, 2015 at 5:55:19 PM UTC-5, Terry Reedy wrote: On 7/17/2015 2:53 PM, nickgeova...@gmail.com wrote: Resizing a tkinter window which contains a frame which contains a button widget, will not change the current size of the window, frame or button as recorded in their height and width attributes (at least not if they are resizable). Post the code and experiments performed that leads you to believe the above. It's really boring but here you are: [ngeo@localhost src]$ python3 Python 3.4.2 (default, Dec 20 2014, 13:53:33) [GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux Type help, copyright, credits or license for more information. import tkinter win=tkinter.Tk() frame=tkinter.Frame(win, bg=blue, width=200, height=200) butt1=tkinter.Button(fg=green, bg=black) frame.grid() butt1.grid() butt1[width] 0 butt1[height] 0 win[width] 0 win[height] 0 Needless to say the button has appeared and has non-zero size. What is the correct way to detect their current size? It is hard to fix code not posted. Just a question from first principles: Find a widget's current size. But the code example posted showed a working way to do the same thing. Unfortunately requiring a function call, and not in the doc online AFAICS butdoc is doc. Terry Jan Reedy -- https://mail.python.org/mailman/listinfo/python-list
Re: tkinter resize question
On Friday, July 17, 2015 at 2:52:56 PM UTC-5, Russell Owen wrote: On 7/17/15 12:17 PM, nickgeova...@gmail.com wrote: On Friday, July 17, 2015 at 1:53:19 PM UTC-5, nickge...@gmail.com wrote: Resizing a tkinter window which contains a frame which contains a button widget, will not change the current size of the window, frame or button as recorded in their height and width attributes (at least not if they are resizable). What is the correct way to detect their current size? Ok, partially answering my own question: The geometry of the window will change (win.geometry()), but the changes do not appear to propagate to the retrieved width/height of the child widgets, frames, etc. Or am I incorrect with this? I'm not seeing it. If I try the following script I see that resizing the widget does update frame.winfo_width() and winfo_height. (I also see that the requested width and height are ignored; you can omit those). -- Russell #!/usr/bin/env python import Tkinter root = Tkinter.Tk() frame = Tkinter.Frame(root, width=100, height=50) frame.pack(expand=True, fill=both) def doReport(*args): print frame actualwidth=%s, height=%s % (frame.winfo_width(), frame.winfo_height()) print frame requested width=%s, height=%s % (frame.winfo_reqwidth(), frame.winfo_reqheight()) button = Tkinter.Button(frame, text=Report, command=doReport) button.pack() root.mainloop() So my mistake was, rather than calling frame.winfo_height() or winfo_width() as you've done, instead checking frame[width] and frame[height]. Which retain their original values regardless of actual size AFAICS. If you do the same on the button, I think you'll find the same (non?)issue. I don't think I've seen the winfo_optioname() construct in the python-side doc. For example Sec 25.1.6.1 Setting Options in the tkinter chapter of the standard python Library Reference doesn't mention it or anything syntactically similar. I'm sure the usual disclaimer see the tcl/tk docs applies, but this seems more than a detail to me. Thanks for your help...Nick -- https://mail.python.org/mailman/listinfo/python-list
Re: tkinter resize question
On 7/17/2015 6:42 PM, nickgeova...@gmail.com wrote: I don't think I've seen the winfo_optioname() construct in the python-side doc. For example Sec 25.1.6.1 Setting Options in the tkinter chapter of the standard python Library Reference doesn't mention it or anything syntactically similar. The docs are incomplete. I'm sure the usual disclaimer see the tcl/tk docs applies, but this seems more than a detail to me. Thanks for your help...Nick Better yet, bookmark this tkinter reference (which I believe is mentioned at the top of the doc). It is only missing stuff new in 8.6. http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/index.html The winfo functions are included in 26 Universal widget methods. http://effbot.org/tkinterbook/ has some worked out examples. There is also a lot on Stackoverflow, which has a tkinter tag. -- Terry Jan Reedy -- https://mail.python.org/mailman/listinfo/python-list