2012-05-10 7 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

.... omg это настолько неловко ... – Talisin

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