Python Tkinter:如何在列表/元组中具有多个点的create_line?

时间:2018-06-30 21:37:15

标签: python list tkinter tkinter-canvas

我想在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 :(得分:1)

您可以使用列表理解来使列表points扁平化:

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

然后使用“ *”语法将该拼合列表的元素转换为参数:

Canvas.create_line(*flattened)

我礼貌地建议您克服有关for循环的麻烦。没有它们,编写有用的程序几乎是不可能的。