0

それで、仕事を単純化しようとして、最初に尋ねたときに間違いを犯してしまいました。私が尋ねようとしていたのは、なぜこの行が機能しないのですか?

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

1 に答える 1

2

キャンバスをパックするのを忘れました

例えば。

  canvas = Canvas(self)
  canvas.pack()
于 2012-05-10T06:54:20.003 に答える