Почему не работает функция `.deiconify`? - PullRequest
0 голосов
/ 05 мая 2020

Я делаю симуляцию операционной системы под названием NutShellOs.

Когда я щелкаю значок на панели задач, он должен восстановиться, как и в обычной ОС. Однако, когда я щелкаю по нему, он работает в первый раз, но после этого он просто восстанавливается.

Вот мой код:

def clicked_on_text_editor(event = "<Button-1>"):
                Text1.withdraw()
                #Port.coords(text_editor_logo_on_port, 55, Desktop.winfo_screenheight() + (0.1 * (0.1 * Desktop.winfo_screenheight())), 105, Desktop.winfo_screenheight())

                def clicked_again(event = "<Button-1>"):
                    #Port.coords(text_editor_logo_on_port, 55, 0, 105, (0.1 * Desktop.winfo_screenheight()))
                    Text1.deiconify()
                Port.bind("<Button-1>", clicked_again)
            Port.bind("<Button-1>", clicked_on_text_editor)

Это не весь код, путь.

Вот весь код, если вы хотите протестировать: Весь код

1 Ответ

1 голос
/ 06 мая 2020

Пример кода не дает подробного указания, ссылка на диск Google не работает.

Так что в основном это всего лишь предположение, я предполагаю, что вы хотите скрыть / показать Toplevel.

По какой-то причине работает:

import tkinter as tk

def clicked_on_text_editor(event = "<Button-1>"):
    Text1.withdraw()

    def clicked_again(event = "<Button-1>"):
        Text1.deiconify()
        Port.bind("<Button-1>", clicked_on_text_editor)

    Port.bind("<Button-1>", clicked_again)

root = tk.Tk()

Text1 = tk.Toplevel()

Port = tk.Label(root, text = "Total Guess")
Port.pack(padx = 50, pady = 20)

Port.bind("<Button-1>", clicked_on_text_editor)

root.mainloop()

Я бы не стал так делать, я бы, наверное, сделал что-то вроде этого:

import tkinter as tk

def clicked_on_text_editor(e):
    if e.widget.toggle:
        Text1.withdraw()
    else:
        Text1.deiconify()
    e.widget.toggle = not e.widget.toggle # Changes True to False, False to True.

root = tk.Tk()

Text1 = tk.Toplevel()

Port = tk.Label(root, text = "Total Guess")
Port.toggle = True # Assign a toggle attribute, can be anything not currently an attribute.
Port.pack(padx = 50, pady = 20)

Port.bind("<Button-1>", clicked_on_text_editor)

root.mainloop()
...