Я пытаюсь создать программу, подобную рисованию, которая позволяет рисовать одну линию, которая, в свою очередь, создает сетку из дублирующих линий, образуя базовую тесселяционную структуру c в качестве конечного результата. Я написал основную c программу с использованием Tkinter, однако у меня нет большого опыта использования Tkinter или даже python в этом отношении. В настоящее время я могу нарисовать две линии, которые расположены рядом, но также связаны в каждой новой точке. Я знаю, что мой код, вероятно, менее звездный (на самом деле, он, вероятно, довольно плохой).
РЕДАКТИРОВАТЬ: Это не позволит мне вставлять изображения в мои сообщения, , так что вот ссылка на обобщенный c, если он небрежный, пример того, что я хочу, чтобы программа производила.
ВТОРОЕ РЕДАКТИРОВАНИЕ: я немного поработал над своим кодом и немного улучшил его, но я все еще продолжаю возникли проблемы с подключением экземпляров второй и третьей строк к исходной строке:
from tkinter import *
from tkinter import ttk
lastx, lasty = 0, 0
points = [(100,100),(300,100),(300,300),(100,300)]
c=1
def xy(event):
global lastx, lasty
lastx, lasty = event.x, event.y
def xy(event):
global lastx2, lasty2
lastx2, lasty2 = event.x+200, event.y+200
def addLine(event):
global lastx, lasty
canvas.create_line((lastx, lasty, event.x, event.y))
lastx, lasty = event.x, event.y
def newLine1(event):
global lastx2, lasty2
canvas.create_line((lastx2, lasty2, event.x-200, event.y))
lastx2, lasty2 = event.x, event.y
def newLine2(event):
global lastx2, lasty2
canvas.create_line((lastx2, lasty2, event.x, event.y-200))
lastx2, lasty2 = event.x, event.y
def LineCreate(event):
addLine(event)
newLine1(event)
newLine2(event)
root = Tk()
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
canvas = Canvas(root)
canvas.grid(column=0, row=0, sticky=(N, W, E, S))
canvas.bind("<Button-1>", xy)
canvas.bind("<B1-Motion>", LineCreate)
canvas.create_polygon(points, outline='#f11',
fill='#1f1', width=2)
root.mainloop()
СТАРЫЙ КОД из tkinter import * из tkinter import ttk
lastx, lasty = 0, 0
points = [(100,100),(300,100),(300,300),(100,300)]
c=1
def xy(event):
global lastx, lasty
lastx, lasty = event.x, event.y
def xy(event):
global lastx2, lasty2
lastx2, lasty2 = event.x+50, event.y+50
def addLine(event):
global lastx, lasty
canvas.create_line((lastx, lasty, event.x, event.y))
lastx, lasty = event.x, event.y
def addLine(event):
global lastx2, lasty2
canvas.create_line((lastx2, lasty2, event.x+50*c, event.y))
lastx2, lasty2 = event.x+5, event.y+5
root = Tk()
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
canvas = Canvas(root)
canvas.grid(column=0, row=0, sticky=(N, W, E, S))
canvas.bind("<Button-1>", xy)
canvas.bind("<B1-Motion>", addLine)
root.mainloop()