VScode 中 Tkinter 的 $DISPLAY 环境问题
$DISPLAY environment problem with Tkinter in VScode
我正在尝试使用 tkinter 构建一个简单的倒数计时器,但是当我 运行 代码出现以下消息时:
File "/home/user/Desktop/Beginner Projects/Pythons/countdown timer.py", line 20, in <module>
root = Tk()
File "/usr/lib/python3.8/tkinter/__init__.py", line 2261, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
我搜索了很多答案,但大部分都不明白。我怎样才能解决这个问题并让 tkinter 在 VScode 上工作?提前致谢!
编辑 1:
from tkinter import *
from tkinter import ttk
from tkinter import font
import time
import datetime
global endTime
def quit(*args):
root.destroy()
def cant_wait():
timeLeft = endTime - datetime.datetime.now()
timeLeft = timeLeft - datetime.timedelta(microseconds=timeLeft.microseconds)
txt.set(timeLeft)
root.after(1000, cant_wait)
root = Tk()
root.attributes("-fullscreen",False)
root.configure(background="black")
root.bind("x", quit)
root.after(1000, cant_wait)
endTime = datetime.datetime(2020,6,7,8,0,0)
fnt = font.Font(family="Helvetica", size=90, weight="bold")
txt = StringVar()
lbl = ttk.Label(root, textvariable=txt, font=fnt, foreground="white", background="black")
lbl.place(relx = 0.5, rely = 0.5, anchor="center")
root.mainloop()
我在 Ubuntu 20.04.1 使用 PySimpleGUI 时遇到了同样的问题。
如果通过单击右上角的绿色箭头(对应于“运行 Python 终端中的文件”)尝试 运行 脚本时出现问题,一种解决方案是进入 Terminal
并适当地设置 DISPLAY 变量。
就我而言,以下命令可以解决问题:
export DISPLAY=:1
DISPLAY 变量的实际值取决于环境的具体情况(例如参见 [https://unix.stackexchange.com/a/612453])
如果问题出现在按 F5(调试)或 Ctrl+F5(运行 未调试)时,则需要编辑 launch.json
文件。
可以通过 运行->Open Configurations 菜单访问该文件。
(假设已经选择了 Debugging/Running 的配置。)
我们需要指示 VSCode 设置 DISPLAY 环境变量。为此,请在适当的部分添加 "env": {"DISPLAY": ":1"},
行。
就我而言,该部分是以 "name": "Python: Current File",
.
开头的部分
我正在尝试使用 tkinter 构建一个简单的倒数计时器,但是当我 运行 代码出现以下消息时:
File "/home/user/Desktop/Beginner Projects/Pythons/countdown timer.py", line 20, in <module>
root = Tk()
File "/usr/lib/python3.8/tkinter/__init__.py", line 2261, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: no display name and no $DISPLAY environment variable
我搜索了很多答案,但大部分都不明白。我怎样才能解决这个问题并让 tkinter 在 VScode 上工作?提前致谢!
编辑 1:
from tkinter import *
from tkinter import ttk
from tkinter import font
import time
import datetime
global endTime
def quit(*args):
root.destroy()
def cant_wait():
timeLeft = endTime - datetime.datetime.now()
timeLeft = timeLeft - datetime.timedelta(microseconds=timeLeft.microseconds)
txt.set(timeLeft)
root.after(1000, cant_wait)
root = Tk()
root.attributes("-fullscreen",False)
root.configure(background="black")
root.bind("x", quit)
root.after(1000, cant_wait)
endTime = datetime.datetime(2020,6,7,8,0,0)
fnt = font.Font(family="Helvetica", size=90, weight="bold")
txt = StringVar()
lbl = ttk.Label(root, textvariable=txt, font=fnt, foreground="white", background="black")
lbl.place(relx = 0.5, rely = 0.5, anchor="center")
root.mainloop()
我在 Ubuntu 20.04.1 使用 PySimpleGUI 时遇到了同样的问题。
如果通过单击右上角的绿色箭头(对应于“运行 Python 终端中的文件”)尝试 运行 脚本时出现问题,一种解决方案是进入 Terminal
并适当地设置 DISPLAY 变量。
就我而言,以下命令可以解决问题:
export DISPLAY=:1
DISPLAY 变量的实际值取决于环境的具体情况(例如参见 [https://unix.stackexchange.com/a/612453])
如果问题出现在按 F5(调试)或 Ctrl+F5(运行 未调试)时,则需要编辑 launch.json
文件。
可以通过 运行->Open Configurations 菜单访问该文件。
(假设已经选择了 Debugging/Running 的配置。)
我们需要指示 VSCode 设置 DISPLAY 环境变量。为此,请在适当的部分添加 "env": {"DISPLAY": ":1"},
行。
就我而言,该部分是以 "name": "Python: Current File",
.