在Tkinter:如何限制画布上的点击次数?

时间:2016-10-18 12:27:13

标签: python tkinter event-handling

我的问题:     创建固定数量的项目(圆圈)后     在Canvas上,为什么我不能继续,如下所示?

#***********************************************************


from Tkinter import *
#========================================================
class Joint():
    def __init__(self,cv):
        self.cv=cv
        self.k=0
        if self.k<=2:
            self.doIt()
#-----------------------------------------
def doIt(self):
        self.cv.bind('<1>', self.onClick)
#-----------------------------------------
def onClick(self,event):
    x=event.x
    y=event.y
    R=5
    #update counter:
    self.k+=1
    print "in k= ",self.k

    coords=[x-R,y-R,x+R,y+R]
    cv.create_oval(coords,fill="red")
#================ MAIN ===============================
root=Tk()

cv=Canvas(root,bg="yellow")
cv.pack()

joint=Joint(cv)

我的问题:     创建固定数量的项目(圆圈)后     在画布上,为什么我不能继续?     (例如见下文)

print "here"
print "k= ",joint.k

root.mainloop()

1 个答案:

答案 0 :(得分:0)

经过大量的重新格式化后,我想我已经找到了你想要的东西。该代码现在只允许您创建5个圆圈。你显然可以改变这个数字。

from Tkinter import *

class Joint():
    def __init__(self,cv):
        self.cv=cv
        self.k=0
        if self.k<=2:
            self.doIt()
        self.circleCounter = 0

    #-----------------------------------------
    def doIt(self):
        self.cv.bind('<1>', self.onClick)
    #-----------------------------------------
    def onClick(self,event):
        if self.k < 5:
            x=event.x
            y=event.y
            R=5 #
            self.k+=1
            print "in k= ",self.k

            coords=[x-R,y-R,x+R,y+R]
            cv.create_oval(coords,fill="red")
        else:
            print "Too many circles created"


root=Tk()

cv=Canvas(root,bg="yellow")
cv.pack()

joint=Joint(cv)
""" my Question: After creating a FIXED number of items (circles) on Canvas, why can't I proceed? (e.g. see below) """

print "here"
print "k= ",joint.k

root.mainloop()

我不确定你的意思&#34;为什么我不能继续?&#34;。