Contact me: hankecnc@gmail.com

qtplasma: TypeError: setMaximum(self, int): 参数 1 有意外的类型 ‘float’ #1491

推推 grbl 3年前 (2023-01-30) 338次浏览
关闭
dwrobel 打开了这个问题 2022 年 1 月 4 日 · 4条评论
关闭

qtplasma: TypeError: setMaximum(self, int): 参数 1 有意外的类型 ‘float’#1491

dwrobel 打开了这个问题 2022 年 1 月 4 日 · 4条评论

注释

qtplasma: TypeError: setMaximum(self, int): 参数 1 有意外的类型 'float' #1491
贡献者

@c-morley我测试了您最新的更改011ebe4,其中修复了 QSlider() 和“float”,它破坏了 qtplasma“快/慢”慢跑。

这是我按下 Jogging Fast 按钮时的回溯:

Traceback (most recent call last):
  File "/home/dw/projects/linuxcnc/share/qtvcp/screens/qtplasmac_4x3/qtplasmac_4x3_handler.py", line 1843, in jog_slow_pressed
    self.w.jog_slider.setMaximum(self.w.jog_slider.maximum() / self.slowJogFactor)
  File "/home/dw/projects/linuxcnc/lib/python/qtvcp/widgets/status_slider.py", line 64, in setMaximum
    return super(DoubleSlider, self).setMaximum(value * self._multi)
TypeError: setMaximum(self, int): argument 1 has unexpected type 'float'
qtplasma: TypeError: setMaximum(self, int): 参数 1 有意外的类型 'float' #1491
贡献者作者

转换参数int()为我解决问题:

diff --git a/lib/python/qtvcp/widgets/status_slider.py b/lib/python/qtvcp/widgets/status_slider.py
index 666ea00c86..798aacaf54 100644
--- a/lib/python/qtvcp/widgets/status_slider.py
+++ b/lib/python/qtvcp/widgets/status_slider.py
@@ -58,10 +58,10 @@ class DoubleSlider(QtWidgets.QSlider):
         return float(super(DoubleSlider, self).value()) / self._multi
 
     def setMinimum(self, value):
-        return super(DoubleSlider, self).setMinimum(value * self._multi)
+        return super(DoubleSlider, self).setMinimum(int(value * self._multi))
 
     def setMaximum(self, value):
-        return super(DoubleSlider, self).setMaximum(value * self._multi)
+        return super(DoubleSlider, self).setMaximum(int(value * self._multi))
 
     def setSingleStep(self, value):
         return super(DoubleSlider, self).setSingleStep(value * self._multi)

qtplasma: TypeError: setMaximum(self, int): 参数 1 有意外的类型 'float' #1491
合作者

我在最新的 master 分支中没有看到这个问题。
如果我将此打印语句添加到 jog_slow_pressed 函数:

def jog_slow_pressed(self, external=False):
    print("self.w.jog_slider.maximum()",self.w.jog_slider.maximum(),type(self.w.jog_slider.maximum()))

终端中的结果是:
self.w.jog_slider.maximum() 15000 <class 'int'>

qtplasma: TypeError: setMaximum(self, int): 参数 1 有意外的类型 'float' #1491
贡献者作者

我在最新的 master 分支中没有看到这个问题。

我在python 3.10和上观察这个问题python3-qt5 5.15.6,目前在 上可用Fedora 35。因此,如果您没有足够的这些软件包的新版本,您可能还无法观察到这些类型的错误。

此处记录的是当前已修复(已合并)的类似问题的列表:

qtplasma: TypeError: setMaximum(self, int): 参数 1 有意外的类型 'float' #1491
合作者

谢谢你,我推送了你建议的更改。