Python Tkinter - 保存画布 - tkinter崩溃

时间:2012-02-23 08:35:21

标签: python save tkinter

我正在尝试使用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")

2 个答案:

答案 0 :(得分:4)

如果您只是将w.postscript()电话转移到mainloop()电话上方,这似乎有效。这意味着错误是由于在关闭Tkinter GUI之后调用w.postscript() (因为mainloop()运行直到窗口关闭)。

我注意到这是你的代码和this example之间的区别,所以我试了一下,看到.ps文件是在脚本运行后立即创建的。

答案 1 :(得分:0)

针对python 3的更新:

请注意:
-必须在画布上调用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()

enter image description here