【问题标题】:How to create loop python tkinter arc shape如何创建循环python tkinter弧形
【发布时间】:2021-07-03 09:22:36
【问题描述】:

我在 tkinter 中绘制形状,代码是这样的 ->

myCanvas.create_arc(30, 290, -10, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)
myCanvas.create_arc(40, 290, 0, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)
myCanvas.create_arc(50, 290, 10, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)  
myCanvas.create_arc(60, 290, 20, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)      
myCanvas.create_arc(70, 290, 30, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2) 
myCanvas.create_arc(80, 290, 40, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2) 
myCanvas.create_arc(90, 290, 50, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2) 
myCanvas.create_arc(100, 290, 60, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2) 
myCanvas.create_arc(110, 290, 70, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2) 
myCanvas.create_arc(120, 290, 80, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)  
myCanvas.create_arc(130, 290, 90, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2) 
myCanvas.create_arc(140, 290, 100, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2) 
myCanvas.create_arc(150, 290, 110, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2) 
myCanvas.create_arc(160, 290, 120, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)   
myCanvas.create_arc(170, 290, 130, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)    
myCanvas.create_arc(180, 290, 140, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)   
myCanvas.create_arc(190, 290, 150, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)
myCanvas.create_arc(200, 290, 160, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)
myCanvas.create_arc(210, 290, 170, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)
myCanvas.create_arc(220, 290, 180, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)
myCanvas.create_arc(230, 290, 190, 160, start = 160, extent = -70, style = ARC, outline = 'green', width = 2)

我想让它变得简单并想循环所以我写了这段代码 ->

y1 = 290
y2 = 160
for k in range(30, 240, 10):
    x1 = k
    # print(x1)
    for j in range(-10, 200, 10):
            x2 = j
            # print (x2)
            myCanvas.create_arc(x1, y1, x2, y2,start = 160, extent = -70, style = ARC, outline = 'green', width = 2)

但最终的结果是不同的。我的循环代码有什么问题?

【问题讨论】:

    标签: python loops for-loop tkinter


    【解决方案1】:

    问题是您有 2 个 for 循环。尝试在 .create_arc(...) 之前添加 print(x1, x2)。对于外部 for 循环的每次迭代,内部循环运行 21 次。

    您的 for 循环已修复:

    import tkinter as tk
    
    root = tk.Tk()
    canvas = tk.Canvas(root)
    canvas.pack()
    
    y1 = 290
    y2 = 160
    for x1 in range(30, 240, 10):
        x2 = x1 - 40
        canvas.create_arc(x1, y1, x2, y2, start=160, extent=-70, outline="green", width=2)
    
    root.mainloop()
    

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 2020-11-19
      • 1970-01-01
      相关资源
      最近更新 更多