Чтобы запустить линейный терминал cmd, оставьте его активным и продолжайте отправлять ему команды из графического интерфейса Kivy. - PullRequest
0 голосов
/ 11 ноября 2018

Версия : Python 3.7 | Платформа : Windows 7

Моя цель : чтобы запустить линейный терминал cmd, оставьте его активным и продолжайте отправлять ему команды из графического интерфейса Kivy

Моя проблема : Подпроцесс завершается после выполнения команды

Описание : У меня есть графический интерфейс с двумя кнопками. Каждая кнопка должна посылать несколько команд на терминал. После выполнения функции обратного вызова «button1» порожденный дочерний процесс завершается. И затем, когда я пытаюсь запустить обратный вызов «button2», я получаю сообщение об ошибке "ValueError: I/O operation on closed file".

Вот мой код:

def button1_callback(self):
    self.child = popen_spawn.PopenSpawn("cmd.exe")
    self.child.sendline("dir")
    self.child.sendeof()
    self.txt += '\n\n' + self.child.read().decode()
    self.update()

def button2_callback(self):
    self.child.sendline("cd E:/temp")
    self.child.sendeof()
    self.txt += '\n\n' + self.child.read().decode()
    self.update()
...