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