Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面

2023年8月7日11:08:48

Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面 _tkinter.TclError: no display name and no $DISPLAY env

报错代码:_tkinter.TclError: no display name and no $DISPLAY environment variable

先举个例子


from tkinter import *

root = Tk() # THIS IS THE LINE CAUSING THE ERROR

label = Label(root, text='Hello World!')
label.pack()

root.mainloop()

这里以打印Hello World为例!

Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
正常我们在服务器中运行此代码会报错
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
重点是在这里 就是这个$DISPLAY。

Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面

但是很多场景下这个是需要在服务器中运行的,众所周知现在大多数公司中所用的服务器是不用图形化界面的 ,这样就会导致你的项目就是tkinter在pycharm远程服务器中调试时不能正常的弹出界面显示,就很糟心 ,我已经试验了很多方法 ,并浏览了很多的网页甚至翻墙终于找到了解决方法
下面就与大家分享下吧 希望这个方法可以帮助你们 不要眨眼 慢慢往下滑 Let’s go!!!

1.首先服务器是不支持我们弹出界面展示的 如果想要展示的话就要用第三方软件辅助我们去实现

首先下载一个Xmanager的工具
下面简单对Xmanager工具做个简单的介绍
Xmanager 是一款小巧、便捷的浏览远端X窗口系统的工具。在工作中经常使用Xmanager来登录远端的Solaris系统,在X窗口系统上作图形化的操作。但是,Xmanager默认并不提供对于中文的支持,为了能够浏览远端的中文Solaris系统,就必须对Xmanager作一些定制化操作,提供中文的浏览能力。

其实就是一个桌面管理工具,他汇集了Xshell系列中的所有软件
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面

Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面

创建Xmanager Xstart命令会话窗口
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
此时会弹出一个界面
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
会话:这个自己取一个名字
主机:服务器地址例如:192.165.86.22
协议:默认就好 SSH
用户名:服务器用户 例如:root
密码:服务器密码 例如:123456
剩下都是默认就好了
重点 :其实这里就是和你用Xshel连接服务器一样 不用奇怪 照做就好
然后接着往下走
点击确定后会弹出一个弹框
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
这里直接确定就好!

确定完以后就可以在Xmanager左侧看到我们刚刚创建的test的会话窗口
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
然后双击你创建的会话窗口
点击以后会出现弹窗 如下图:

Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
其实这里就是他会连接你的远程服务器 然后在你的服务器配置中写入$DISPLAY的具体信息

如果出现上图字样 已申请x11转移… 成功 字样就说明 已经执行成功了

这时我们可以去服务器查看是否存在

输入命令 printenv grep DISPLAY
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
会出现 localhost:12.0
这个就是DISPLAY的信息

此时回到代码 按住ctrl键点击Tk()方法
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
可以看到 Tk()类的第一个参数 screeName
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
这个参数默认为None 我们上边已经成功创建了DISPLAY

我们将DISPLAY的值加入Tk()类中

Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面

这个12.0就刚刚在Xmanager中成功创建的DISPLAY的值
冒号一定要写上,代表的是地址 给完成的也行
这样写也是可以的
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
此时我们再次运行代码
可以看到我们想要的弹窗已经成功弹出
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面

细心的同学可以发现
此时我们的任务栏中是Xmanager的图标 并不是tkinter自己的 说明是借助Xmanager执行的
Tkinter python GUI程序在PyCharm远程服务器中运行并正常弹出界面
执行到这里我们的问题就被成功解决了哦

如果问题被解决 可以点赞哦关注 收藏 不迷路哈哈

我还不定时更新自己在工作或者是测试中遇到的各种各样的问题 同时也会在微信公众号不定时更新论坛

每天不定时更新技术问题 。。。
感谢大家!!!

关注我的淘宝店铺 问题一条龙式解决,专业团队承接各类技术问题
https://item.taobao.com/item.htm?spm=a230r.7195193.1997079397.8.469c7c7d1PHErF&id=646024177029&abbucket=2
很欢迎大家对对沟通

转载:https://blog.csdn.net/fhj_fhj/article/details/112849482?spm=1001.2014.3001.5501

  • 作者:leesire
  • 原文链接:https://coderoom.blog.csdn.net/article/details/117412594
    更新时间:2023年8月7日11:08:48 ,共 1733 字。