2016-10-18 7 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

SOのコードを正しくフォーマットするには、コード行ごとに余分なスペースを4つ追加する必要があります。エディタでそれを行い、問題のコードを再びペーストする方が簡単です。 – 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() 

"なぜ私は進めることができないのですか?"

関連する問題