我试图绘制一系列矩形,给定存储在列表中的值。在
对于初学者来说,嵌套循环通常是最好的选择。然而,经过一些测试,这是一个非常坏的主意。在
下面是一个例子:
bs = 20
x_values = ['3', '4', '5', '6']
y_values = ['11', '11', '11', '11']
for X in x_values:
for Y in y_values:
x1 = int(X) * bs
y1 = int(Y) * bs
x2 = int(x1) + bs
y2 = int(y1) + bs
self.canvas.create_rectangle(x1, y1, x2, y2, fill='red', width=1,outline='white', tag='obj')
不用说,这是一个非常糟糕的想法。对于这种小尺寸的东西,它可能工作得很好。但是,如果元素列表增加,则会导致问题。总之,这种方法是不可行的。在
经过一番研究,我尝试了其他方法。在
^{pr2}$我想做的很简单。我决定动态生成元素,也就是说,for循环返回值,Tkinter读取并使用它作为坐标。然后,当生成下一个值时,最后一个值将被转储。在
出于某种原因,Tkinter一次读取所有变量并返回错误:
_tkinter.TclError: wrong # coordinates: expected 0 or 4, got 16
我该怎么解决这个问题呢?在
假设要绘制四个矩形,可以使用zip将x和y坐标的两个列表组合成一个x,y对列表:
这将导致以下结果:
^{pr2}$如果现在要绘制四个矩形,其中每个坐标都用于定义实际坐标,则可以按如下方式循环每对矩形:
相关问题 更多 >
编程相关推荐