В настоящее время я пытаюсь воспроизвести полосу прокрутки меню «Пуск» Window 10 в Qt (python), но я не могу понять, как изменить размер моего пользовательского QScrollBar, чтобы изменить его ширину во время выполнения.
Я попытался изменить его размер с помощью метода QScrollBar.resize (в enterEvent и leaveEvent), но он масштабирует виджет за пределами области рисования. Например, моя полоса прокрутки настроена на QScrollArea, и когда я пытаюсь изменить ее размер, она не занимает больше места и не перемещает виджеты, вместо этого она просто масштабируется справа, где я ее не вижу.
Единственное решение, которое я нашел на данный момент, - это использовать StyleSheet, но я не могу анимировать его, чтобы получить плавное изменение размера, которое я ищу.
Есть код, который вы можете протестировать и посмотреть, что не так:
from PySide2 import QtWidgets, QtCore
from functools import partial
class MyTE(QtWidgets.QPlainTextEdit):
def __init__(self):
super(MyTE, self).__init__()
self.setVerticalScrollBar(MyScrollBar(self))
self.setPlainText('mmmmmmmmmmmmmmmmmmmmmmmmmmmmm'*50)
class MyScrollBar(QtWidgets.QScrollBar):
def __init__(self, parent=None):
super(MyScrollBar, self).__init__(parent=parent)
self.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
def enterEvent(self, event):
super(MyScrollBar, self).enterEvent(event)
self.resize(QtCore.QSize(4, self.height()))
def leaveEvent(self, event):
super(MyScrollBar, self).leaveEvent(event)
self.resize(QtCore.QSize(10, self.height()))
wid = MyTE()
wid.show()