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