#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()