Мои файлы Tkinter не будут открываться после 3 попыток. Пожалуйста, помогите мне

#python #tkinter

#python #tkinter

Вопрос:

В основном я создал два файла Tkinter с кнопками. Когда я нажимаю на одну кнопку, это должно привести меня к другому файлу, а когда я нажимаю кнопку в другом файле, это должно вернуть меня обратно. Однако это не работает после 3 попыток. Пожалуйста, помогите мне найти решение для этого. Для получения более подробного вопроса посмотрите это видео:https://drive.google.com/file/d/1Ma_-szEf4JBbxwFgiSS5GrkIFrWI3Mog/view

Вот мой код также:

 File 1: 
from tkinter import *
root.title("Hello This is file 1")
root.geometry("600x600")

def goToFileTwo():
    root.destroy()
    import file2

button = Button(text="Click here to go to file 2", command=goToFileTwo)
button.pack()

root.mainloop()
  
 File 2: 
from tkinter import *
root.title("Hello This is file 2")
root.geometry("600x600")

def goToFileOne():
    root.destroy()
    import file1

button = Button(text="Click here to go to file 1", command=goToFileOne)
button.pack()

root.mainloop()
  

Пожалуйста, помогите мне найти решение.

Комментарии:

1. import оператор импортирует модуль один раз. Итак, первый вызов goToFileTwo() будет импортировать file2 , затем вызов goToFileOne() будет импортировать file1 . Однако, когда goToFileTwo() вызывается снова, file1 не будет импортирован снова. Вам нужно поместить требуемый код в каждый файл в функцию и вызвать эту функцию вместо этого.

2. Вы никогда не увидите этот метод открытия другого графического интерфейса в профессиональном коде. импорт не предназначен для вызова кода в другом файле, вместо этого вы должны использовать вызовы функций для этого. Лично у меня было бы главное окно в качестве корня Tk, и для любых последующих окон создавайте их как окна верхнего уровня, скрывая / удаляя корневое окно

Ответ №1:

В file1 и file2 вы просто добавляете приведенный ниже код, это удалит ваш импортированный модуль из системного кэша

 del sys.modules["your_module_name"]
  

пожалуйста, не забудьте также импортировать модуль sys

таким образом, ваш полный код file1 будет

 from tkinter import *
import sys
root=Tk()
root.title("Hello This is file 1")
root.geometry("600x600")
try:
   del sys.modules["file2"]
except:
       None
def goToFileTwo():
    root.destroy()
    import file2
button = Button(text="Click here to go to file 2", command=goToFileTwo)
button.pack()
root.mainloop()