Weird Tk Canvas coordinate issue
John Posner
jjposner at snet.net
Mon Apr 6 18:11:14 EDT 2009
Tim Shannon wrote:
> I'm new to python, so keep that in mind.
>
> I have a tk Canvas that I'm trying to draw on, and I want to start my
> drawing at an offset (from 0) location. So I can tweak this as I
> code, I set this offset as a class level variable:
>
> def ClassName:
> OFFSET = 20
>
> def __init__(self, master)):
> self.canvas = Canvas(master)
> self.canvas.create_rectangle(self.OFFSET,
> self.OFFSET,
> 300 + self.OFFSET,
> 300 + self.OFFSET,
> width=2)
>
>
> The weird thing is, it doesn't offset. If I set my offset to 100000,
> it still starts drawing at 0,0.
> Here's the really weird part (at least to me), if I put a print line
> right about my drawing statements to print the value of the offset, it
> works like it should, and offsets the drawing.
> If I remove the print line, the offset goes away.
>
> This makes no sense to me.
Tim Shannon wrote:
> I'm new to python, so keep that in mind.
>
> I have a tk Canvas that I'm trying to draw on, and I want to start my
> drawing at an offset (from 0) location. So I can tweak this as I
> code, I set this offset as a class level variable:
>
> def ClassName:
> OFFSET = 20
>
> def __init__(self, master)):
> self.canvas = Canvas(master)
> self.canvas.create_rectangle(self.OFFSET,
> self.OFFSET,
> 300 + self.OFFSET,
> 300 + self.OFFSET,
> width=2)
>
The above code wouldn't even compile. Please be careful to cut-and-paste
working code into your email message. (I've made this mistake myself!)
Changes to make:
1. first line: change "def" to "class"
2. def __init__(self, master)): <--- get rid of extra ")"
3. Make sure to "pack" the canvas into the overall Tk window:
self.canvas = Canvas(master)
self.canvas.pack() <--- add this line
More information about the Python-list
mailing list