Since a QScrollBar is usually visible only when its range maximum is greater than 0, you can just check that value.
class Widget(QWidget):
def __init__(self, parent= None):
# ....
# note that the scroll area is now an instance member
self.scroll = QScrollArea()
self.scroll.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.scroll.setWidget(widget)
self.scroll.verticalScrollBar().rangeChanged.connect(self.checkScrollBarRange)
vLayout = QVBoxLayout(self)
vLayout.addWidget(self.scroll)
self.setLayout(vLayout)
# the next is important when resizing the widget containing the scroll area
self.scroll.installEventFilter(self)
def eventFilter(self, source, event):
if source == self.scroll and event.type() == QEvent.Resize:
self.checkScrollBarRange()
return super().eventFilter(source, event)
def checkScrollBarRange(self):
if (self.scroll.verticalScrollBarPolicy() != Qt.ScrollBarAlwaysOff and
self.scroll.verticalScrollBar().maximum()):
print('vertical scroll bar IS visible')
else:
print('vertical scroll bar NOT visible')
If you want to know more about the Data Science then do check out the following Data Science which will help you in understanding Data Science from scratch