Унаследованный класс Tkinter не работает должным образом в Ubuntu - PullRequest
0 голосов
/ 04 мая 2018

Я создал простой класс, унаследованный непосредственно от корневого окна, он отлично работает на компьютере Mac. Однако, когда я пытаюсь запустить его на своем компьютере с Ubuntu, происходит сбой со следующей ошибкой. Что вызывает это?

Traceback (most recent call last):
  File "/home/estilen/Dropbox/Python/email_viewer/dialog.py", line 15, in <module>
    Dialog('This is definitely working')
  File "/home/estilen/Dropbox/Python/email_viewer/dialog.py", line 7, in __init__
    tk.Tk.__init__(self, dialog_message)
  File "/usr/lib/python3.5/tkinter/__init__.py", line 1871, in __init__
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: couldn't connect to display "This is definitely working"

Код:

import tkinter as tk


class Dialog(tk.Tk):

    def __init__(self, dialog_message):
        tk.Tk.__init__(self, dialog_message)
        self.geometry('400x100')
        label = tk.Label(self, text=dialog_message)
        label.pack(anchor='center', side='top', pady=10)
        self.mainloop()


if __name__ == '__main__':
    Dialog('This is definitely working')

1 Ответ

0 голосов
/ 04 мая 2018
tk.Tk.__init__(self, dialog_message)

Мне это не подходит. Первый позиционный аргумент для конструктора Tk: screenName. Если вы не хотите отображать свое окно на дисплее с именем «Это определенно работает», не указывайте этот аргумент.

tk.Tk.__init__(self)

... Или, идиоматически,

super().__init__()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...