Повторно не открывается окно TKinter

888DeMoN888

Новичок
Пользователь
Янв 17, 2022
15
2
3
Я пишу своего ассистента, в котором если команда равна “Список команд”, приложение выводит на экран список всех команд, но при повторном вызове этого окна возникает ошибка.
Windows 10
python 3.9
Все библиотеки, с которыми я работаю в этом приложении:
Python:
from sqlite3 import Time
import time
from datetime import datetime
from pynput.keyboard import Key, Controller
from playsound import playsound
from tkinter import *
import tkinter
import random
import speech_recognition
import os
import sys
import keyboard
import webbrowser
import random
Вот ошибка:
Traceback (most recent call last):
File “Voice Assistant 1.0.0.py”, line 332, in <module>
File “tkinter\__init__.py”, line 2255, in wm_title
_tkinter.TclError: can't invoke “wm” command: application has been destroyed
Вот тот фрагмент кода:
Python:
elif voice_input == "список команд" or voice_input == "помощь":
    canvas = Canvas(tk, width=500, height=560)
    canvas.pack()
    tk.title("List of commands")
    canvas.create_text(70, 20, text="1. Расскажи о себе")
    #там много строк, поэтому оставил только одну
    tk.mainloop()
Мне необходимо, чтобы это окно можно было вызывать бесконечное количество раз, прошу помогите!!!
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
932
208
43
20
Москва
Я пишу своего ассистента, в котором если команда равна “Список команд”, приложение выводит на экран список всех команд, но при повторном вызове этого окна возникает ошибка.
Windows 10
python 3.9
Все библиотеки, с которыми я работаю в этом приложении:
Python:
from sqlite3 import Time
import time
from datetime import datetime
from pynput.keyboard import Key, Controller
from playsound import playsound
from tkinter import *
import tkinter
import random
import speech_recognition
import os
import sys
import keyboard
import webbrowser
import random
Вот ошибка:
Traceback (most recent call last):
File “Voice Assistant 1.0.0.py”, line 332, in <module>
File “tkinter\__init__.py”, line 2255, in wm_title
_tkinter.TclError: can't invoke “wm” command: application has been destroyed
Вот тот фрагмент кода:
Python:
elif voice_input == "список команд" or voice_input == "помощь":
    canvas = Canvas(tk, width=500, height=560)
    canvas.pack()
    tk.title("List of commands")
    canvas.create_text(70, 20, text="1. Расскажи о себе")
    #там много строк, поэтому оставил только одну
    tk.mainloop()
Мне необходимо, чтобы это окно можно было вызывать бесконечное количество раз, прошу помогите!!!
создавай каждый раз отдельный объект окна, вот тут про это есть:

Обычные окна в Tkinter порождаются не только от класса Tk, но и Toplevel. От Tk принято создавать главное окно. Если создается многооконное приложение, то остальные окна создаются от Toplevel. Методы обоих классов схожи.
 

888DeMoN888

Новичок
Пользователь
Янв 17, 2022
15
2
3
создавай каждый раз отдельный объект окна, вот тут про это есть:
создавай каждый раз отдельный объект окна, вот тут про это есть:
Благодарю!!!
 

Форум IT Специалистов