如何从 Python Tkinter 应用程序捕获到控制台的任何输出?

Posted

技术标签:

【中文标题】如何从 Python Tkinter 应用程序捕获到控制台的任何输出?【英文标题】:How can I catch any output to the console from a Python Tkinter application? 【发布时间】:2018-08-08 19:28:40 【问题描述】:

我有一个大型的、多文件的 Tkinter 应用程序,它具有无数的功能,然后与 Pyinstaller 一起打包为可执行文件。

它包含对预期事件的错误处理。但是,它对意外事件没有任何错误处理。在将应用程序打包为可执行文件之前运行应用程序时,意外错误会打印到控制台。一旦它被打包为可执行文件,这些错误就会被隐藏(我不希望终端窗口向用户显示)。

这样做的问题是意外错误不会在任何地方显示,因此我无法捕获和调试它们。

我怎样才能有一个“包罗万象”来抓取任何将进入控制台的输出,或者捕获或记录任何错误?我知道很多方法可以通过额外的代码来实现这一点,但是为应用程序的每个功能添加代码对于我想要实现的目标来说似乎过于繁重。

【问题讨论】:

见***.com/a/22434594/7032856。 Any 是一个很强烈的词。 【参考方案1】:

Linux系统有一个解决方案:

strace -p <PID_OF_PROCESS> -s9999 -e write

它将为您提供已运行进程的完整输出。

见:

man strace

详情。

【讨论】:

以上是关于如何从 Python Tkinter 应用程序捕获到控制台的任何输出?的主要内容,如果未能解决你的问题,请参考以下文章

如何将捕获的输入从 tkinter 条目小部件写入 json 文件

如何使用 tkinter 在 python 中嵌入 python 解释器框架?

Python - 如何读取从Tkinter中选择的文件?

Python - 从Tkinter回调返回

如何从Tkinter,Python中的Text小部件中移除焦点

如何使用 python 3 和 tkinter 模块从右到左对齐菜单栏中的项目?