Closed Sadwy closed 1 year ago
正确的处理方法是将你的代码debug没啥问题后在使用。
如果懒得那样做,那把exe拖到cmd中运行,这样msgbox里的错误信息也会在cmd中显示出来。
PS:明明readme中比较明确的说明该调试方式。
这与stand本身无关。
stand使用的前提就是你的代码运行无错。 正确的处理方法是将你的代码debug没啥问题后在使用。
如果懒得那样做,那把exe拖到cmd中运行,这样msgbox里的错误信息也会在cmd中显示出来。
PS:明明readme中比较明确的说明该调试方式。
启动代码里有这一段:
意味着,GUI 模式下任何未经处理的异常都会由 MessageBox 显示,以前从命令行查看出错信息的方法失效了。
要想绕过这段代码,可以在自己的启动脚本里添加:
try:
main()
except Exception:
with open('PyStand.log', 'w', encoding='utf-8') as fp:
import traceback
traceback.print_exc(file=fp)
启动代码里有这一段:
意味着,GUI 模式下任何未经处理的异常都会由 MessageBox 显示,以前从命令行查看出错信息的方法失效了。
要想绕过这段代码,可以在自己的启动脚本里添加:
try: main() except Exception: with open('PyStand.log', 'w', encoding='utf-8') as fp: import traceback traceback.print_exc(file=fp)
感谢. 我在执行你提供的代码时无法生成PyStand.log文件, 最终我使用以下代码解决了我的问题:
try:
main()
except Exception as e:
import logging
logging.basicConfig(filename='PyStand.log', format='%(asctime)s - %(levelname)s - %(message)s')
logging.error(str(e))
又在 #51 中新增了一次提交,以供讨论。第二次提交主要解决 https://github.com/skywind3000/PyStand/issues/52 中提到的问题。
如果重定向成功,优先通过命令行输出错误信息,而非通过 os.MessageBox。
我在cmd中运行PyStand.exe, 运行中的报错在显示在弹窗里. 因为报错太长, 而且error弹窗不支持滚动或调整窗口大小, 导致我无法看到完整的error信息.![bug while error is too long](https://github.com/skywind3000/PyStand/assets/45492880/69ba8468-e0f5-465d-83da-ecca1c4773e9)