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