关联问题:Mac OS X: _tkinter.TclError: no display name and no $DISPLAY environment variable
上述内容存在同样的问题,但答案并不适用于我。
a.py
from Tkinter import *
root = Tk()
canvas = Canvas(bg='white', width = 200, height = 200)
canvas.pack()
canvas.create_line(0, 0, 199, 199, fill="blue", width = 5)
canvas.create_line(0, 199, 199, 0, fill="blue", width = 5)
canvas.update()
canvas.postscript(file = "x.ps")
root.mainloop()
a.py在远程服务器上
当我通过VNC连接到服务器并运行它时,这工作正常。
但是当我通过Windows上的Putty连接到服务器并运行它时,它给了我“没有显示名称和没有diplay环境变量”
1)是否可以通过Putty运行?
2)python可以知道是否通过putty建立连接并且可能引发我自己的错误而不是TclError?
答案 0 :(得分:2)
您需要在Windows机器上运行X服务器,然后在登录前在putty会话中启用X11转发(请参阅PuTTY中的Connection / SSH / X11属性页)。在过去,我使用了Xming这是免费的,而eXceed则不是。一旦你在机器上有一个X服务器,你实际上正在查看并通过ssh链接转发X连接,它将在远程机器上设置DISPLAY环境变量,以便X客户端可以与显示服务器通信。否则,如果没有DISPLAY设置,Tk将引发错误 - 正如您所见。