zhiyiYo / PyQt-Fluent-Widgets

A fluent design widgets library based on C++ Qt/PyQt/PySide. Make Qt Great Again.
https://qfluentwidgets.com
GNU General Public License v3.0
5.61k stars 541 forks source link

ScrollBar #165

Closed ismaelcompsci closed 1 year ago

ismaelcompsci commented 1 year ago

Environment

To Reproduce Happens when running the gallery demo.py

file: qfluentwidgets\components\widgets\scroll_bar.py Error

PyQt-Fluent-Widgets master examples(1)/gallery/demo.py"
Traceback (most recent call last):
  File "C:\Users\Ismael\Documents\PROJECTS\EBOOK_1.0.0\venv\Lib\site-packages\qfluentwidgets\components\widgets\scroll_bar.py", line 227, in setRange
    self._adjustHandlePos()
  File "C:\Users\Ismael\Documents\PROJECTS\EBOOK_1.0.0\venv\Lib\site-packages\qfluentwidgets\components\widgets\scroll_bar.py", line 355, in _adjustHandlePos
    self.handle.move(self._padding + delta, y)
TypeError: arguments did not match any overloaded call:
  move(self, a0: QPoint): argument 1 has unexpected type 'float'
  move(self, ax: int, ay: int): argument 1 has unexpected type 'float'

fixed

    #line 346
    def _adjustHandlePos(self):
        total = max(self.maximum() - self.minimum(), 1)
        # FIXED BY CONVERTING THIS TO int()
        delta = int(self.value() / total * self._slideLength())

        if self.orientation() == Qt.Vertical:
            x = self.width() - self.handle.width() - 3
            self.handle.move(x, self._padding + delta)
        else:
            y = self.height() - self.handle.height() - 3
            self.handle.move(self._padding + delta, y)

Second Error

Traceback (most recent call last):
  File "C:\Users\Ismael\Documents\PROJECTS\EBOOK_1.0.0\venv\Lib\site-packages\qfluentwidgets\components\widgets\scroll_bar.py", line 226, in setRange
    self._adjustHandleSize()
  File "C:\Users\Ismael\Documents\PROJECTS\EBOOK_1.0.0\venv\Lib\site-packages\qfluentwidgets\components\widgets\scroll_bar.py", line 346, in _adjustHandleSize
    self.handle.setFixedWidth(max(40, s))
TypeError: setFixedWidth(self, w: int): argument 1 has unexpected type 'float'

fixed

    line 334
    def _adjustHandleSize(self):
        total = self.maximum() - self.minimum() + self.parent().height()

        if total != 0:
            s = self._grooveLength() * self.parent().height() / total
        else:
            s = 1

        if self.orientation() == Qt.Vertical:
            self.handle.setFixedHeight(int(max(40, s)))
        else:
            # max prints 1005.0 
            # converting max(40, s ) to a int 
            self.handle.setFixedWidth(int(max(40, s)))

works fine on version 0.8.2

zhiyiYo commented 1 year ago

Thank you for your feedback. v0.8.4 has fixed this issue

ismaelcompsci commented 1 year ago

Just upgraded everything works now! Thanks