web-dev-qa-db-ja.com

ローカルマシン_tkinter.TclError:ディスプレイ ":0"に接続できませんでした

TLTR:ローカルラップトップ(Pop_OSを実行中!)でtkinterアプリを表示しようとすると、次のエラーが発生する

_tkinter.TclError:ディスプレイ「:0」に接続できませんでした

こんにちは世界、

まず、ここに質問を投稿するのは初めてなので、我慢してください。私の質問について何かが正しくない場合は教えてください。私も新しいUbuntuのユーザーです(数か月間)。

さて、私の問題に。ラップトップでtkinterアプリケーションを表示しようとすると、次のエラーが発生します。

プロトコルが指定されていません
プロトコルが指定されていません
トレースバック(最新の通話が最後):
ファイル「/home/lucenden/python/sublime/conversions/conversion_app.py」、70行目、
ルート= Tk()
ファイル「/usr/lib/python3.7/tkinter/__init__.py」、2023行、__ init__
self.tk = _tkinter.create(screenName、baseName、className、interactive、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()
2
Luc vd Enden

@stovflあなたのヒーロー!次は仕事をしました

export DISPLAY = unix $ DISPLAY

関連する投稿で提供された説明は本当に役に立ちました。返信いただきありがとうございます!

1
Luc vd Enden