当input()来自管道时,PyQt5应用程序窗口未重绘

时间:2019-04-13 07:27:09

标签: python linux pyqt5

我有一个简单的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)

0 个答案:

没有答案