【问题标题】:Python turtlegraphics inconsistency between different OS's不同操作系统之间的Python海龟图形不一致
【发布时间】:2015-11-05 08:20:37
【问题描述】:

我正在使用 Python 的 turtle 模块和以下代码绘制一个相当简单的形状:

import turtle

turtle.color('black', '#fef00e')
turtle.begin_fill()
turtle.left(180)
turtle.forward(100)
for i in range(5):
    turtle.right(90)
    turtle.forward(100+50*i)
turtle.end_fill()
turtle.done()

奇怪的是,这会在 Windows(左)和我尝试过的所有其他操作系统(Ubuntu、Arch、OSX)上产生两种不同的结果。具有偶数重叠填充的区域仍会在 Windows 上填充,但对于其他区域则再次空白。谁能解释一下这是什么原因,是否有任何影响它的方法?这种行为如此不一致似乎很奇怪。

这似乎也是一种设计选择;对我来说,这两个版本中的哪一个是“正确”版本并不是很明显。

【问题讨论】:

标签: python turtle-graphics graph-coloring


【解决方案1】:

问题在于“填充”在特定系统上是指“颜色”还是“切换颜色”。上色两次就是上色。切换两次就是不切换。 (这对是 Spencer Brown 的“形式法则”的基础。) Turtle 是在 Tkinter 之上实现的。这是一个简单的 Tkinter 程序,它在 Windows 上重现左图(虽然没有黑线,乌龟添加了)。我强烈怀疑你会在 *nix 上得到正确的数字(我目前没有)。

from tkinter import *
root = Tk()
canv = Canvas(root, width=800, height=800)
canv.pack()
l = canv.create_polygon(
        500,400, 400,400, 400,300, 550,300,
        550,500, 300,500, 300,200, 500,400, fill='yellow')
root.mainloop()

如果是这样,那么我怀疑差异是底层图形系统的结果以及它对“填充”的解释。

我查看了tk manual,但没有发现填充两次的含义,只是'-fill color'。

【讨论】:

  • 我可以确认这确实重现了相同的差异。我怀疑是底层图形库导致了这种差异,因为在两个平台上运行的 Python 代码是相同的(一直到下面编译的 CPython)。
猜你喜欢
  • 1970-01-01
  • 2014-03-18
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 1970-01-01
  • 2018-05-30
  • 2018-09-04
相关资源
最近更新 更多