2012-05-10 6 views
0

私は仕事を単純化しようとしましたが、初めて質問したときに間違いを犯しました。 私が尋ねようとしたのは、なぜこの回線が機能​​しないのかということでした。Tkinterでキャンバスにオブジェクトを作成する方法

self.canvas.create_line(A、B、C、D)

は今の質問は、特定にあると文句を言わないあなたがこの記事を削除した場合、私は気にしないので、他の人に有用であること。残念ながら私はそれを削除することはできません。

from tkinter import Tk, Canvas, Frame, BOTH 


class Lsystem(Frame): 

    def rule_1(self): #A0 
     self.r.append(1) 
     self.r.append(0) 

     A = self.lastCo[0][0] 
     B = self.lastCo[0][1] 
     C = self.lastCo[0][0]+self.length 
     D = self.lastCo[0][1]+self.length 

     self.canvas.create_line(A,B,C,D) 


    def rule_2(self): #B1 
     self.r.append(1) 

    def lindenL(self, num): 
     x = 0 
     while x < num: 
      for cycle in list(range(len(self.q))): 
       if self.q[0] == 1: self.rule_1() 
       else: self.rule_2() 
       self.q.pop(0) 
      self.q = self.r 
      #print (self.q) 
      x += 1 

     return self.q 

    def setVariables(self): 
     self.r = [] 
     self.q = [1] 
     self.line = [] 
     self.length = 100 
     self.maxCo = [800, 600] 
     self.lastCo = [[400,600],[0,0]] #0 is A(0), 1 is B(1) 

    def __init__(self, parent): 
     Frame.__init__(self, parent) 

     self.setVariables() 
     self.parent = parent   
     self.initUI() 

     print(self.lindenL(2)) 

    def initUI(self): 
     self.parent.title("Shapes")   
     self.pack(fill=BOTH, expand=1) 
     self.canvas = Canvas(self) 

     self.draw() 

     self.canvas.pack() 

    def draw(self): 
     pass 
     #self.canvas.create_line(self.calcCoA()) 


def main(): 

    root = Tk() 
    ex = Lsystem(root) 
    root.geometry("800x600+300+300") 
    root.mainloop() 


if __name__ == '__main__': 
    main() 

答えて

2

あなたは

例えば、あなたのキャンバスを詰めるのを忘れていました。

canvas = Canvas(self) 
    canvas.pack() 
+0

....これはとても恥ずかしいです... – Talisin

関連する問題