Python中关于在GUI应用程序读取stdin内容
问题
键盘输入的字符串是保存在stdin中的,我在程序中如何将stdin中数据拿到并赋给一个变量? 之前我是通过sys.stdin.readline()来读取stdin中的数据的,但是导致界面卡死,我想问一下你有什么办法?我google一下,没有找到我想要的
data = input()
用 sys.stdin.readline 或 input, 都只能读取整行数据. 如果没有按回车键, 调用是阻塞不返回的.
这就是为什么程序界面被卡死的原因.
Qt 里还有个键盘事件的钩子. 需要在终端键盘输入时, 可能需要配置一下.123QtCore.pyqtRemoveInputHook()code.InteractiveConsole(_locals).interact()QtCore.pyqtRestoreInputHook()
当QtCore模块第一次导入时,它会安装一个Python输入钩子(即它设置Python的PyOS_InputHook变量的值)。这允许在应用程序运行时在解释器提示符处输入命令。然后可以动态创建新的Qt对象并调用任何现有的Qt对象的方法。输入钩子可能会导致某些类型的应用程序出现问题,特别是那些通过不同手段提供类似设备的应用程序。此功能删除PyQt安装的输入钩。
对于图形界面程序, 最合理的做法还是只用输入控件, LineEdit 等, 不用控制台, 也就是不用 sys.stdin
Qt 处理键盘消息应该用键盘事件