1import weakref 2from fsui.qt import Qt, QScrollArea, QFrame 3from .widget_mixin import WidgetMixin 4 5 6class VerticalScrollArea(QScrollArea, WidgetMixin): 7 def __init__(self, parent): 8 QScrollArea.__init__(self, parent.get_container()) 9 self.init_widget(parent) 10 self.__child = None 11 # self.layout = None 12 # self._painter = None 13 14 self.move(0, 2000) 15 # self.setAutoFillBackground(True) 16 self.setFrameShape(QFrame.NoFrame) 17 self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) 18 19 @property 20 def size(self): 21 return self.get_size() 22 23 def showEvent(self, event): 24 self.on_resize() 25 26 def resizeEvent(self, event): 27 QScrollArea.resizeEvent(self, event) 28 self.on_resize() 29 30 def get_child(self): 31 # child = self.__child() 32 # return child 33 return self.__child 34 35 def get_min_width(self): 36 return self.get_child().get_min_width() 37 38 def on_resize(self): 39 child = self.get_child() 40 height = child.get_min_height() 41 child.set_size((self.viewport().width(), height)) 42 43 def set_widget(self, child): 44 # self.__child = weakref.ref(child) 45 self.__child = child 46 widget = child.widget() 47 self.setWidget(widget) 48 widget.move(0, 0) 49 self.on_resize() 50