Окно приложения PyQt5 не перерисовывается, когда input () поступает из канала - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть простое приложение PyQt5, которое запрашивает некоторый консольный ввод у пользователя, используя input() и одновременно отображает некоторый результат в окне. Это прекрасно работает, когда ввод поступает из консоли, но когда он поступает из канала, окно открывается, но не перерисовывается.

#!/usr/bin/env python3

import sys

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
hex = __builtins__.hex

class MyWindow(QtWidgets.QWidget):
  pass

if __name__ == "__main__":
  app = QtWidgets.QApplication(sys.argv)
  win = MyWindow()
  win.show()

  try:
    ans = input("?> ")
    while len(ans):
      print(ans)
      ans = input("?> ")
  except EOFError:
    pass

Это работает (ввод читается из консоли и отображается окно):

./test.py

Это не так (ввод читается из конвейера и печатается, но окно не перерисовывается):

PYTHONUNBUFFERED=1 ./input.py | ./test.py

, где input.py:

#!/usr/bin/env python3

import time

if __name__ == '__main__':
    while True:
        print('hello')
        time.sleep(1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...