Dynamically add items to Tkinter Canvas

Posted by nick369 on Stack Overflow See other posts from Stack Overflow or by nick369
Published on 2010-05-13T02:01:21Z Indexed on 2010/05/13 2:04 UTC
Read the original article Hit count: 244

Filed under:
|
|
|

I'm attempting to learn Tkinter with the goal of being able to create a 'real-time' scope to plot data. As a test, I'm trying to draw a polygon on the canvas every time the 'draw' button is pressed. The triangle position is randomized. I have two problems:

  1. There is a triangle on the canvas as soon as the program starts, why and how do I fix this?

  2. It doesn't draw any triangles when I press the button, at least none that I can see.

CODE


from Tkinter import *

from random import randint

class App:

def __init__(self,master):

    #frame = Frame(master)
    #frame.pack(side = LEFT)

    self.plotspc = Canvas(master,height = 100, width = 200, bg = "white")
    self.plotspc.grid(row=0,column = 2, rowspan = 5)

    self.button = Button(master, text = "Quit", fg = "red", \
                         command = master.quit)
    self.button.grid(row=0,column=0)

    self.drawbutton = Button(master, text = "Draw", command = \
                           self.pt([50,50]))
    self.drawbutton.grid(row = 0, column = 1)        

def pt(self, coords):
    coords[0] = coords[0] + randint(-20,20)
    coords[1] = coords[1] + randint(-20,20)
    x = (0,5,10)
    y = (0,10,0)
    xp = [coords[0] + xv for xv in x]
    yp = [coords[1] + yv for yv in y]
    ptf = zip(xp,yp)
    self.plotspc.create_polygon(*ptf)        

if _name_ == "_main_": root = Tk()

app = App(root)

root.mainloop()

The code is formatting strangely within the code tags, I have no idea how to fix this.

© Stack Overflow or respective owner

Related posts about python

Related posts about tkinter