On Aug 1, 2010, at 1:08 PM, Peter Otten wrote: > Chris Hare wrote: > > >> On Aug 1, 2010, at 10:24 AM, rantingrick wrote: >> >>> On Aug 1, 7:35 am, Chris Hare <ch...@labr.net> wrote: >>>> I have the following chunk of code. Although it seems to execute fine, >>>> no errors >>> >>> Not True! it contains syntax errors. Check the posted code and next >>> time post all the code. >>> -- >>> http://mail.python.org/mailman/listinfo/python-list >> >> Hmmm... ok >> here is the code. I get no errors on my console when it execute >> >> urllib.urlretrieve(findu, "image.png") > > I get a NameError on the very first line. > >>>> urllib.urlretrieve(findu, "image.png") > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > NameError: name 'urllib' is not defined > > When you want to demonstrate a problem try to make a self-contained example, > i. e. one that can be run without the need for us guess the surrounding > code. Remove everything that is irrelevant for the problem like the logging > in code below and the png/gif conversion gymnastics. > > Anyway, here is a self-contained demo (you have to pass the filename of an > image on the commandline): > > import Tkinter > import ImageTk > import Image > import sys > > [filename] = sys.argv[1:] > > image = Image.open(filename) > > root = Tkinter.Tk() > frame = Tkinter.Frame(root) > frame.pack() > label = Tkinter.Label(root) > label.pack() > > def make_resize(percent): > def resize(): > width, height = image.size > label.image = label["image"] = ImageTk.PhotoImage( > image=image.resize((width*percent//100, height*percent//100))) > return resize > > make_resize(100)() > > pairs = [ > ("Small", 20), > ("Medium", 50), > ("Original", 100), > ("Big", 200)] > > for i, (text, percent) in enumerate(pairs): > button = Tkinter.Button(frame, text=text, command=make_resize(percent)) > button.grid(row=0, column=i) > > root.mainloop() > > Peter > -- > http://mail.python.org/mailman/listinfo/python-list
Thanks for the help. My one week of python is getting a workout. I have shortened it all down and made it a standalone example, using yours as a model. Your example, works, but it will take a lot of effort to retrofit it into the code I have. (which is maybe not a bad idea,). Anyway from Tkinter import * import ImageTk import Image import sys def sizeit(filename): image = Image.open(filename) w,h = image.size print w, h photo = ImageTk.PhotoImage(file=filename) canvasWidth = 450 canvasHeight = 412 image = image.resize((canvasWidth,canvasHeight),Image.ANTIALIAS) w,h = image.size print w, h netRadarImage = Label(frame, image=image) netRadarImage.image = photo w.grid(row=1, column=0, columnspan=3) netRadarImage.grid( row=1, column=0) [filename] = sys.argv[1:] root = Tk() frame = Frame(root) frame.grid() sizeit(filename) root.mainloop() Just like yours it takes a filename. Unlike yours, mine gets an error that I can't figure out and is likely the root of the problem. When I run this code I get 600 550 <== ORIGINAL image size 450 412 <== resized image size Traceback (most recent call last): File "zztest.py", line 26, in <module> sizeit(filename) File "zztest.py", line 16, in sizeit netRadarImage = Label(frame, image=image) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", line 2466, in __init__ Widget.__init__(self, master, 'label', cnf, kw) File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk/Tkinter.py", line 1932, in __init__ (widgetName, self._w) + extra + self._options(cnf)) _tkinter.TclError: image "<Image.Image image mode=P size=450x412 at 0x1016095A8>" doesn't exist So, my problem appeared to be the resize, but in fact is just getting it onto the label. What am I doing wrong? -- http://mail.python.org/mailman/listinfo/python-list