Кнопка Tkinter остается нажатой после нажатия в результате импорта другого файла?

#python #python-3.x #tkinter

Вопрос:

Я создал кнопку, которая будет запускать некоторый код, и, чтобы лучше организовать код, я поместил этот код в другой скрипт.

При вызове этого скрипта с помощью модуля операционной системы кнопка остается нажатой и приводит к тому, что приложение «не отвечает»

Кто-нибудь знает, как я могу вызвать этот другой сценарий, не заставляя эту кнопку оставаться нажатой?

 self.forgot_password = Button(self.root, text='Forgot Password', font=('Helvetica',7), bg='#411684',fg='#fff', command=self.forgotPassword_window)
self.forgot_password.grid(row=5,column=2)
def forgotPassword_window(self):
    os.system('python forgot.py')
 

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

1. Вы можете выполнить os.system() в другом потоке

2. До тех пор, пока файл forgot.py если вы живете в том же потоке, графический интерфейс замерзнет

3. Воспользуйся from subprocess import Popen .

Ответ №1:

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

 from subprocess import Popen, PIPE

process = Popen(['Python', 'forgot.py'], stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()