Sho*_*Sho 17 python terminal pyqt pyqt4 python-3.x
我一直在使用Python 3编写一个小实用程序应用程序(下面的测试用例也适用于Python 2)和PyQt 4,它使用该code模块生成一个允许与Qt窗口交互的REPL提示符.
不幸的是我遇到了一个我无法解决的问题:当我exit()在应用程序code内部时input()(称为raw_input()Python 2.x),我的Linux终端随后不再回显键入的字符.即终端似乎处于断开状态,可能是由于发出了一些转义序列input().
我已经尝试了各种方法来解决这个问题,从使用curses模块和其他方法在运行之前重置终端exit,到尝试stdin通过实际处理exit()输入()来模拟流退出(不幸的code.InteractiveConsole.push()是,这不起作用,正如人们可能认为的那样,尝试编写自己的非阻塞input()使用threading,但我无法将某些工作结合在一起.
最后,这是一个简化的测试用例来演示这个问题:
#!/usr/bin/env python3
import code
import sys
from PyQt4.QtGui import QApplication, QWidget
app = QApplication(sys.argv)
app.lastWindowClosed.connect(exit)
widget = QWidget()
widget.show()
code.interact()
Run Code Online (Sandbox Code Playgroud)
对于那些不熟悉(PY)的Qt,这将打开一个空白窗口,当它是封闭的,从连接app的lastWindowClosed信号将导致内置通话exit()功能的情况发生.当code模块执行input()要读取的调用时会发生这种情况sys.stdin.在这里,当我关闭窗口时,之后输入终端并不会显示任何类型的字符.
我主要使用Python 3,实际的应用程序使用Python 3特定的代码,但我也尝试过Python 2.7中的测试用例,它也显示了同样的问题.
| 归档时间: |
|
| 查看次数: |
6946 次 |
| 最近记录: |