У вас есть два варианта, чтобы предотвратить вывод дочернего процесса в консоль. Первый - использовать подпроцесс. PIPE для отправки данных из дочернего процесса в буфер и чтения ut только когда дочерний процесс завершен с использованием метода связи подпроцесса:
def onclick():
subprocess.Popen("python main.py", stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Если вам вообще не нужен вывод дочернего процесса в материнском процессе, перейдите с подпроцессом. DEVNULL:
def onclick():
subprocess.Popen("python main.py", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
Редактировать:
Если вы не хотитеиметь выход дочернего процесса в главном процессе вообще или если выход слишком велик, и PIPE может фактически сломаться. Вам лучше пойти с DEVNULL и модулем регистрации:
#In child process setup logging
logging.basicConfig(
filename="logfile", format='%(asctime)s - %(levelname)s - %(message)s', level=logging.INFO)
#then in child process substitute all print to logging.info, logging.warning, #logging.error and whatewer you want.
# Then start child process the following way from master process:
def onclick():
subprocess.Popen("python main.py", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
Надеюсь, ответ был полезен для вас, не стесняйтесь задавать вопросы.