Tkinter.Canvas.create_line.coords
Bengt Richter
bokr at oz.net
Sun Jun 1 04:37:02 EDT 2003
On Sun, 1 Jun 2003 09:53:20 +0200 (CEST), Arnd Baecker <arnd.baecker at web.de> wrote:
>Hi,
>
>I have a question concerning modifying a line created
>within a Canvas:
>
>It boils down to that (for `plot` being a Canvas)
> self.plot.coords(self.line,10,0,10,10,80,100,100,200)
>works, whereas
> liste=[10,0,10,10,80,100,100,200]
> self.plot.coords(self.line,liste)
I would try prefixing a '*' on the theory that the function is defined like foo below:
self.plot.coords(self.line, *liste)
Notice:
>>> def foo(first, *rest): print first,rest
...
>>> foo(1,2,3,4)
1 (2, 3, 4)
>>> r = [2,3,4]
>>> foo(1,r)
1 ([2, 3, 4],)
Note what happened in the preceding: the entire r simply became the first and only
arg in the args tuple, which has length 1 instead of 3.
>>> foo(1,*r)
1 (2, 3, 4)
Compare this result to the original. We have unpacked r into the arg sequence,
so the r elements show up as if they had been passed as separate args.
>raises the error:
> self.tk.splitlist(
> TclError: bad screen distance "[10,"
>((Maybe the example below more clearly demonstrates what I mean here.))
>
>Actually, help(Tkinter.Canvas.coords) gives
> coords(self, *args) unbound Tkinter.Canvas method
looks like foo above.
[...]
If the above works, we can go on to the next problem, which someone else
will have to get into if it's going to happen tonight ;-)
Regards,
Bengt Richter
More information about the Python-list
mailing list