_tkinter.TclError: изображение "..." не существует независимо от того, как я кодирую - PullRequest
0 голосов
/ 24 июня 2018

Я знаю, что этот вопрос уже был задан и решен, но у меня все еще остается та же проблема.

def showpopup(self, event, item):
    global r

    if str(event.type) == "Enter":
        r = tk.Tk()
        r.geometry("400x900+{:}+{:}".format(self.winfo_rootx()+840, self.winfo_rooty()))
        r.wm_title("Pop UP")
        r.overrideredirect(True)
        im = Image.open(os.path.join(images_db_dir, "a.png"))
        imaitem = ImageTk.PhotoImage(im)
        r.columnconfigure(0, weight=1)
        r.rowconfigure(0, weight=1)

        mf = tk.Frame(r)
        mf.grid(row = 0, column=0, sticky="nsew")    

        mf.grid_columnconfigure(0, weight=1)
        f1, f2 = tk.Frame(mf, , tk.Frame(mf, background="red")
        f1.place(x=5, y=5, anchor="nw", width=390, height=390)
        f2.place(x=0, y=405, anchor="nw", width=400, height=400)

        l = tk.Label(f1, image = imaitem)
        l.image = imaitem
        l.grid()
        r.mainloop()

    elif str(event.type) == "Leave":
        r.destroy()

Эта программа является частью большой программы, которая показывает "всплывающее окно"(созданный объектом tkinter), когда event.type имеет значение «Enter», и уничтожает его, когда «Leave».В любом случае, несмотря на то, что я сохраняю ссылку, кодируя l.image = imaitem, код разбивает строку перед этим.Когда я запускаю его, он говорит, что изображение не существует, хотя всплывающее окно появляется и работает нормально, когда вместо изображения текст закодирован внутри метки.

Заранее спасибо.

1 Ответ

0 голосов
/ 24 июня 2018

Если showpopup вызывается из другого окна Tkinter, вы должны использовать Toplevel() вместо Tk().Вы не можете иметь два Tk() экземпляра.

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