我正在尝试使用postscript方法保存我的画布,而Tkinter崩溃......
w.postscript(file="my_drawing.ps", colormode='color')
获得例外:
w.postscript(file="my_drawing.ps", colormode='color')
File "C:\python27\lib\lib-tk\Tkinter.py", line 2307, in postscript
self._options(cnf, kw))
_tkinter.TclError: invalid command name ".57816328L"
我不确定这个错误意味着什么 - 以前有人遇到过这个错误吗?
我尝试了没有颜色选项,但没有用。
编辑 - 删除基础的widgit会出现同样的错误:
from Tkinter import *
master = Tk()
w = Canvas(master, width=1000, height=1000)
w.pack()
w.create_oval(450,550,550,450)
mainloop()
w.postscript(file="my_drawing.ps")
答案 0 :(得分:4)
如果您只是将w.postscript()
电话转移到mainloop()
电话上方,这似乎有效。这意味着错误是由于在关闭Tkinter GUI之后调用w.postscript()
(因为mainloop()运行直到窗口关闭)。
我注意到这是你的代码和this example之间的区别,所以我试了一下,看到.ps文件是在脚本运行后立即创建的。
答案 1 :(得分:0)
请注意:
-必须在画布上调用update
。
-Canvas
背景未保存。
-仅保存画布的可见部分。
import tkinter as tk
import random
COLORS = ["white", "black", "red", "green", "blue", "cyan", "yellow", "magenta"]
root = tk.Tk()
cv = Canvas(root, width=1000, height=1000, bg='cyan')
cv.pack()
for _ in range(1000):
coordinates = [random.randrange(0, 1000) for _ in range(4)]
cv.create_oval(*coordinates, outline=random.choice(COLORS))
cv.update()
cv.postscript(file="my_drawing.ps")
mainloop()