Canvas polygon coords() using list comprehension

Dave Harris dpharris76 at msn.com
Fri May 28 01:19:12 EDT 2004


I have written a reasonably clean way to perform coordinate transformations 
on a polygon, but Tkinter Canvas is not being particularly cooperative. The 
following program has been distilled down to a minimum and generates a 
traceback (see below) when it runs.

It appears that the create_polygon() method is more versatile than the 
coords() method.

Could someone can suggest a way to have the list comprehension not generate 
tuples, that would probably create a coordinate list acceptable to coords()?

Thanks,
Dave Harris

# cantest.py - canvas test program
from Tkinter import *

class App:
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()
        c = Canvas(frame, width=300, height=300)
        c.pack()

        outline1 = [(100, 0), (200, 50), (150, 150)]
        p1 = c.create_polygon(outline1, fill='', outline='black')
        p2 = c.create_polygon(outline1, fill='', outline='red')

        outline2 = [(x+10, y+20) for (x, y) in outline1]
        c.coords(p2, outline2)

root = Tk()
app = App(root)
root.mainloop()


Traceback (most recent call last):
  File "cantest.py", line 24, in ?
    app = App(root)
  File "cantest.py", line 20, in __init__
    c.coords(p2, outline2)
  File "C:\PYTHON23\Lib\lib-tk\Tkinter.py", line 2039, in coords
    self.tk.splitlist(
_tkinter.TclError: bad screen distance "170)]" 




More information about the Python-list mailing list