本地计算机_tkinter.TclError:无法连接以显示“:0”

时间:2019-11-23 10:02:30

标签: python tkinter tcl

TLTR: 尝试在本地笔记本电脑上显示tkinter应用程序时出现以下错误(运行Pop_OS!)

  

_tkinter.TclError:无法连接以显示“:0”

你好,世界

首先: 我是在这里发布问题的新手,请耐心等待。如果关于我的询问的事情不正确,请告诉我。我也是ubuntu的新用户(几个月以来)。

现在,解决我的问题。当我尝试在笔记本电脑上显示tkinter应用程序时,出现以下错误:

未指定协议
未指定协议
追溯(最近一次通话):
  在第70行中输入“ /home/lucenden/python/sublime/conversions/conversion_app.py”
    根= Tk()
  在__init__中的文件“ /usr/lib/python3.7/tkinter/__init__.py”,第2023行
    self.tk = _tkinter.create(screenName,baseName,className,交互式,wantobjects,useTk,sync,use)
_tkinter.TclError:无法连接以显示“:0”

我试图调查问题,但是与我的问题有关的唯一事情是,使用SSH将应用程序流式传输到另一台显示器的人,而我却试图在笔记本电脑上显示其自身。

问题是,我通过应用一些在网上找到的解决方案来解决此问题。但是我不知道我尝试了哪种解决方案真正做到了。这是我到目前为止尝试过的:

  

安装Xorg

     

将$ DISPLAY设置为:“:0:0”和“ localhost:0:0”

     

自己挖入tkinter文件(据我所知,那里没有用)

     

打开笔记本电脑后再打开,但仅在一次应用所有修复程序之后...

有关我的系统/环境的信息:

  

使用Pop_OS! (Ubuntu dist)和Sublime Text运行代码

     

运行python3.7

再次,如果香港专业教育学院遗漏了任何需要的信息,请告诉我。预先感谢!

我的代码:

from tkinter import *
from tkinter.colorchooser import askcolor
import sys


class App(Frame):
""" This is the class for our root window. """
def __init__(self, master=None):
    Frame.__init__(self, master)        # Parameters that you want to send through the Frame class.
    self.master = master
    self.default_bg = "#8f8f8f"
    self.default_w = 0
    self.default_h = 0
    self.pack(fill=BOTH, expand=1)

    # Creating a menu instance.
    menu = Menu(self.master)
    self.master.config(menu=menu)

    # Create the File menu object. Then add a cascade to the menu bar.
    file = Menu(menu)
    # Add commands to the File menu, calling it something, and then specifying the command it runs.
    file.add_command(label="Exit", command=self.app_exit)
    file.add_command(label="Temp", command=self.do_nothing)
    # Then add it to the menu bar.
    menu.add_cascade(label="File", menu=file)

    # Create the Astronomy menu object.
    edit = Menu(menu)
    # Add commands to the Astronomy menu, calling it something, and then specifying the command it runs.
    edit.add_command(label="Clear Master", command=self.clear_master)
    edit.add_command(label="Temp", command=self.do_nothing)
    # Then add it to the menu bar.
    menu.add_cascade(label="Edit", menu=edit)

    self.init_app()

@staticmethod
def do_nothing():
    print("Do nothing")

@staticmethod
def app_exit():
    exit()

def clear_master(self):
    """ Clear the master of any widgets on the screen. """
    widget_list = self.master.winfo_children()
    for widget in widget_list:
        widget.pack_forget()

def track_mouse(self):
    print("COME BACK TO track_mouse !!!!")

def scale(self):
    scale = Scale(self.master, from_=0, to=10, orient=HORIZONTAL)
    scale.grid()

def init_app(self):
    canvas1 = Canvas(self, width=self.default_w, height=self.default_h)
    canvas1.create_line(10, 0, 10, 600)
    Scrollbar(canvas1)

    button_1 = Button(self.master, text="Exit...", command=self.app_exit)

    canvas1.pack()
    button_1.pack()


root = Tk()
w = root.winfo_screenwidth()
h = root.winfo_screenheight()
root.geometry("%dx%d+0+0" % (w, h))
app = App(root)
root.mainloop()

1 个答案:

答案 0 :(得分:0)

@stovfl您是英雄! 以下工作完成了

  

export DISPLAY = unix $ DISPLAY

相关帖子中提供的解释确实很有帮助。 感谢您的回复!