【问题标题】:How to print a turtle() window?如何打印一个turtle() 窗口?
【发布时间】:2016-06-02 06:53:35
【问题描述】:

所以我有一个简单的海龟螺旋制造商,我想知道是否有一种方法可以物理打印出由该程序创建的我的设计副本。

代码:

import turtle
x= float(input("Angle: "))
y= float(input("Step: "))
scale = int(input("Scale: "))
window = turtle.Screen()
window.bgcolor("white")
turtle = turtle.Turtle()
turtle.color("black")
turtle.speed(100)
turtle.pendown()
size=0
for i in range(scale):
   size+=y
   turtle.left(x)
   turtle.forward(size)

例如,如果变量是:

x=121
y=1
scale=300

程序是这样的:

是否可以打印这些窗口,而无需用户手动执行?

【问题讨论】:

  • 您只需要打印您发布的图像吗?
  • 程序制作的任何图像

标签: python printing tkinter turtle-graphics tkinter-canvas


【解决方案1】:

您可以将turtle Tk 画布的屏幕截图保存为后记文件,如下所示:

canvas = window.getcanvas()
canvas.postscript(file='/tmp/out.ps')

然后您可以使用subprocess 调用打印命令。例如,在 unix 上,

import subprocess
subprocess.call(['lpr', '/tmp/out.ps'])

import turtle
import random
import subprocess

x = float(input("Angle: "))
y = float(input("Step: "))
scale = int(input("Scale: "))
# x, y, scale = 121, 1, 300
window = turtle.Screen()
window.bgcolor("white")
t = turtle.Turtle()
t.color("black")
t.speed(100)
t.pendown()
size = 0
for i in range(scale):
    size += y
    t.left(x)
    t.forward(size)

canvas = window.getcanvas()
filename = '/tmp/out.ps'
canvas.postscript(file=filename)
subprocess.call(['lpr', filename])
turtle.mainloop()

提示:最好不要将模块名称重新分配给其他值,如

turtle = turtle.Turtle()

这使得从原始turtle模块调用任何其他函数变得困难。最好给 Turtle 实例一个新的变量名,比如t

t = turtle.Turtle()

【讨论】:

  • 我收到此错误:回溯(最近一次调用最后一次):文件“T:\Desktop\Turtle.py”,第 24 行,在 subprocess.call(['lpr', filename ]) 文件“C:\Python34\lib\subprocess.py”,第 537 行,使用 Popen(*popenargs, **kwargs) 作为 p 调用:文件“C:\Python34\lib\subprocess.py”,第 859 行, 在 init restore_signals, start_new_session) 文件 "C:\Python34\lib\subprocess.py", 第 1112 行, 在 _execute_child startupinfo) FileNotFoundError: [WinError 2] 系统找不到指定的文件跨度>
  • 错误是找不到filename。您是否指定了完整的绝对路径?
  • 是的,即使我指定了完整路径,仍然无法正常工作
  • 后记文件是否成功保存到磁盘?可以查看文件吗?您可以使用lpr /path/to/file.ps 从Windows 控制台打印它吗?了解这些步骤中是否有任何错误可能有助于我们找出 Python 脚本中出了什么问题。
  • 是的文件存在,但它不会打印画布
猜你喜欢
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 2019-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多