tkinter resize question

2015-07-17 Thread nickgeovanis
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

2015-07-17 Thread nickgeovanis
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

2015-07-17 Thread Terry Reedy

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

2015-07-17 Thread Terry Reedy

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

2015-07-17 Thread Russell Owen

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

2015-07-17 Thread Rick Johnson
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

2015-07-17 Thread nickgeovanis
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

2015-07-17 Thread nickgeovanis
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

2015-07-17 Thread Terry Reedy

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