2016-10-18 2 views
0

мой вопрос: После создания ФИКСИРОВАННОГО количества элементов (кругов) на холсте, почему я не могу продолжить, как показано ниже?В Tkinter: Как ограничить количество кликов на холсте?

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


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

вам нужно добавить дополнительные 4 пробела перед каждой строкой кода, чтобы правильно форматировать код на SO. Это проще сделать в редакторе и вставить код, о котором идет речь. – furas

+0

Брайан. Как только я создал N-количество кругов, я хочу перейти к строке «здесь» (как пример). – user3421954

ответ

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() 

Я не уверен, что вы подразумеваете под «почему я не могу продолжить?».

Смежные вопросы