2017-01-22 49 views
-1
canvas.create_line(50, 500, 950, 500, dash=(5, 1), tags="splitDistance") 

这将创建一个行看起来像这样:使用TKinter画布“破折号”选项没有表现如预期

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

+0

'dash'适用于Linux Mint上的我。也许这取决于系统。或者在问题中添加最少的工作示例 - 因此我们可以运行它并比较结果。 – furas

+0

好的,我添加了一张图片。我使用Windows 10. – Blightbuster

+0

刚刚发现了一个类似的问题,这是7岁,并没有答案。 http://smtp.grokbase.com/t/python/tkinter-discuss/099vgnqzr0/python-3-1-canvas-rectangle-dash-dashoffset – Blightbuster

回答

0

不同的平台支持不同的破折号图案。你所看到的是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个可用。最后2个例子将与第一个例子相同。

+0

有没有办法给Windows添加破折号? – Blightbuster

+0

@ user5508373:唯一的解决方法是确保您使用您正在运行的平台支持的短划线模式。 –

+0

缺口的第二个参数是否也适用于系统?在我的例子中,无论使用哪种模式,都不会改变差距。 – Blightbuster