开源改变世界

glnav.py 中需要除以零检查 #2093

推推 grbl 3年前 (2023-01-31) 175次浏览
打开
satiowadahc 打开了这个问题 2022 年 10 月 15 日 · 8条评论
打开

glnav.py 中需要除以零检查#2093

satiowadahc 打开了这个问题 2022 年 10 月 15 日 · 8条评论

注释

glnav.py 中需要除以零检查 #2093
贡献者

以后可能会看看,留在这里是为了提醒自己这样做。

我的设置:自定义用户界面,使用来自 qtvcp 的 gcodegraphics。运行 2.9。

  File "/usr/lib/python3/dist-packages/qt5_graphics.py", line 546, in set_current_view
    return getattr(self, 'set_view_%s' % self.current_view)()
  File "/usr/lib/python3/dist-packages/glnav.py", line 418, in set_view_z
    self.set_eyepoint_from_extents(size[0], size[1])
  File "/usr/lib/python3/dist-packages/glnav.py", line 253, in set_eyepoint_from_extents
    ztran = max(2.0, e1, e2 * w/h) ** 2
ZeroDivisionError: float division by zero

master中的相关代码:

    def set_eyepoint_from_extents(self, e1, e2):
        """Set how far the eye is from the position we are looking
        based on the screen width and height of a subject."""
        w = self.winfo_width()
        h = self.winfo_height()

        ztran = max(2.0, e1, e2 * w/h) ** 2
        self.set_eyepoint(ztran - self.zcenter)
glnav.py 中需要除以零检查 #2093
合作者

检查除以零是个好主意,但还有一个问题,为什么 winfo_height 返回零?

ztran = max(2.0, e1, e2 * w/(max(h, 1e-10))) ** 2 是我的简单修复。

但是,如果 h == 0,则根本不重新计算 ztran 可能是一个很好的论据。

glnav.py 中需要除以零检查 #2093
贡献者作者

我可以看到两个选项,要么将 h 设置为 epsilon 值,要么不更新 ztran。

但是它让 LCNC 崩溃了,只有终端中的信息,至少它应该通知用户或处理异常。

glnav.py 中需要除以零检查 #2093
合作者

@c-morley与其让我在不知道 e1 和 e2 是什么的情况下回避这个问题,不如看看这个?

glnav.py 中需要除以零检查 #2093
合作者

你打赌。

glnav.py 中需要除以零检查 #2093
合作者

try:
exception:
会简单明了,但我想知道是否还有其他错误被掩盖了。

glnav.py 中需要除以零检查 #2093
合作者

错误消息是否更长?

glnav.py 中需要除以零检查 #2093
贡献者作者

与 if 语句相比,在 python 中尝试例外是昂贵的。

我正在调试其他东西而错过了复制这个。

glnav.py 中需要除以零检查 #2093
合作者

我正在考虑在 qt_graphics 代码中添加 try up,它不会经常被调用。
试图在不崩溃的情况下捕获错误。
我的猜测仍然是其他原因导致了错误。
该错误意味着窗口的高度或宽度为零 – 这似乎不正确。
在先前的错误导致事情无法正确初始化之后,您可能会收到各种奇怪的错误报告。

免费注册 在 GitHub 上加入此对话。已有帐户? 登录评论
标签
还没有
项目

还没有

发展

没有分支机构或拉取请求

3人参加
glnav.py 中需要除以零检查 #2093glnav.py 中需要除以零检查 #2093glnav.py 中需要除以零检查 #2093

喜欢 (0)