Python Tkinter: Как создать_лину с несколькими точками в списке / кортеже? - PullRequest
0 голосов
/ 01 июля 2018

Существует список координат, по которым я хочу нарисовать линии на холсте Tkinter:

points = [(1,1), (2, 2), (3, 3), (2, 0)]   # etc. This is could have 100 points or more

Следующим шагом будет вызов функции create_line, но она не может поддерживать список:

Canvas.create_line(1, 1, 2, 2, 3, 3)       #this works ok
Canvas.create_line(points)                 #this doesn't work

Так есть ли эффективный способ разделить элементы в списке и вставить их в функцию в этом порядке? Если возможно, я бы хотел не использовать циклы for.

1 Ответ

0 голосов
/ 01 июля 2018

Вы можете сгладить список points с пониманием списка:

flattened = [a for x in points for a in x]

И превратить элементы этого сплющенного списка в аргументы с синтаксисом "*":

Canvas.create_line(*flattened)

Я вежливо предлагаю вам преодолеть свои проблемы с петлями. Писать полезные программы без них практически невозможно.

...