解决labelimg闪退问题 TypeError: setValue(self, a0: int): argument 1 has unexpected type ‘float‘
2026/4/17 20:22:19 网站建设 项目流程

下载的labelimg一开始标注就报错如下图所示(本文labelImg版本为1.8.6):

🧠 为什么会变成 float?

在 LabelImg 里:

  • 鼠标事件用的是QPointF
  • canvas 缩放/transform 后坐标变成 float
  • 或者做过scale运算

导致算出来的值是float类型,但是PyQt接收是int类型,所以最简单的解决方案就是强制转为int类型。

1.在canvas.py文件中将第526行,530行和第531行修改如下:

p.drawRect(int(left_top.x()), int(left_top.y()), int(rect_width), int(rect_height))
p.drawLine( int(self.prev_point.x()), 0, int(self.prev_point.x()), int(self.pixmap.height())) p.drawLine( 0, int(self.prev_point.y()), int(self.pixmap.width()), int(self.prev_point.y()))

2.在labelimg.py中修改第965行如下:

bar.setValue(int(bar.value() + bar.singleStep() * units))

修改之后,在进行标注工作labelImg就不会闪退。若未解决可直接下载labelImg源代码来使用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询