TKinter Canvas' dash'选项的行为不符合预期

时间:2017-01-22 22:23:20

标签: python python-3.x tkinter tkinter-canvas

canvas.create_line(50, 500, 950, 500, dash=(5, 1), tags="splitDistance")

这将创建一个如下所示的行:

XXXXX XXXXX XXXXX XXXXX

5个破折号,1个空格然后重复,如this文档所述

但是当将1更改为任何值时,会更改间隙大小。

dash=(5, 100)

XXXXX XXXXX XXXXX XXXXX

另一个奇怪的行为是,第一个参数仅在可以被5分割时改变结果,例如:(5,10,15,20 ......)

dash=(1, 1)

X X X X X X X X X X X X

dash=(4, 1)

X X X X X X X X X X X X

dash=(5, 1)

XXXXX XXXXX XXXXX XXXXX

以下是该计划和结果的图片:

image from the program and result

1 个答案:

答案 0 :(得分:2)

不同的平台支持不同的破折号模式。您所看到的是Windows不支持与基于X的系统相同的破折号模式。

来自canonical tcl/tk documentation on the dash attribute来自这些例子(在tcl语法中,但是对tkinter的翻译很简单):

-dash .     → -dash {2 4}
-dash -     → -dash {6 4}
-dash -.    → -dash {6 4 2 4}
-dash -..   → -dash {6 4 2 4 2 4}
-dash {. }  → -dash {2 8}
-dash ,     → -dash {4 4}

文档继续这样说:

  

在仅支持一组有限的虚线模式的系统上,虚线模式将显示为可用的最近的虚线模式。例如,在Windows上,只有上述示例中的前4个可用。最后两个示例将与第一个示例完全相同。