【问题标题】:tkinter canvas create_arc method giving round edged arcstkinter canvas create_arc 方法给出圆边弧
【发布时间】:2017-03-24 04:54:18
【问题描述】:

我在 tkinter 中绘制弧线。他们使用“弧”方法,因此只有指定宽度和颜色的外边缘。令人讨厌的是,一些弧线似乎随机有一个圆形边缘。有谁知道这是bug还是可以修复?

示例代码:

w1.create_arc(xarc0,yarc0,xarc1,yarc1,start=arcstart,extent=arcextent,width=thick1,outline=mc,style="arc")

附上问题的图片。

【问题讨论】:

标签: python-2.7 tkinter tkinter-canvas


【解决方案1】:

经过一些实验,我认为这是一个小故障

我运行了一个模拟来创建 360 条弧线,每个弧线的范围都来自 1 - 360,我发现弧线有弯曲末端的唯一时间是弧线的范围是 90 或 271 时,我没有知道为什么会发生这种情况,但我认为它不应该发生。

green 弧是模拟的,redblue 弧是具有弯曲末端的弧。我认为没有办法解决这个问题,但是你可以将范围从 90 更改为 91,就像我对 orange 弧所做的那样,因为你可以看到它有一个笔直的末端并没有太大区别。

如果你想玩,这里是代码:

from tkinter import *

Window = Tk()
w1 = Canvas(Window)
w1.pack()


for x in range(360):
    w1.after(5)
    arc = w1.create_arc(20, 20, 150,100,start=0,extent=x,width=30,outline = "green", style="arc")    
    w1.update()
    if x == 90 or x == 271:
        print("Now!")    

w1.create_arc(160,20,   300,100,start=0,extent=90,width=30,outline = "red", style="arc")
w1.create_arc(180,120,  320,200,start=0,extent=271,width=30,outline = "blue", style="arc")
w1.create_arc(0,  150,  140,230,start=0,extent=91,width=30,outline = "orange", style="arc")

【讨论】:

  • 谢谢汤姆,我有预感这是一个小故障。我会尝试应用一些过滤器来删除精确的 90 和 271 弧。
  • 在进一步试验我的代码后,很明显 tkinter 不能用于高分辨率弧。无法预测圆边将出现的确切位置,十进制度数显然也随机创建 360 度弧。希望这对其他用户有用 - 最好找到另一个库。目前正在调查kivy。谢谢。
  • 我没有考虑十进制角,还有负角,所以我认为你可以尝试另一个模块
猜你喜欢
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2023-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
相关资源
最近更新 更多