задача сделать список контактов в левой части элемента
QScrollArea, каждый элемент прокручиваемого списка должен быть фиксированной высоты и опираться при заполнении на верх. Как это сделать? Вот код
from PySide6.QtWidgets import *
from PySide6.QtGui import *
from PySide6.QtCore import *
import sys
class Color(QWidget):
def __init__(self, color):
super(Color, self).__init__()
self.setAutoFillBackground(True)
palette = self.palette()
palette.setColor(QPalette.Window, QColor(color))
self.setPalette(palette)
class UrlImage(QLabel):
def __init__(self, url : str, *args, **kwargs):
super().__init__(*args, **kwargs)
self.image = QImage()
import requests
self.image.loadFromData(requests.get(url).content)
self.setPixmap( QPixmap.fromImage(self.image))
class UserAvatar(QWidget):
def __init__(self, contact, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setFixedSize(200, 40)
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle("Hello World")
self.setCentralWidget(UrlImage("https://c0.wallpaperflare.com/preview/115/811/694/simple-background-abstract-slick.jpg"))
self.contactsScroll = QScrollArea(self)
self.contactsScroll.setGeometry(2,0, 200, self.height())
self.contactsScroll.setAttribute(Qt.WA_TranslucentBackground, True)
self.contactsScroll.setStyleSheet("background-color: rgba(0,0,0,150);")
self.contactsScroll.setLayout(QVBoxLayout())
self.show()
self.addContact("NICKNAME", "{URL}", "SERVICE_NAME", "SERVICE_URL")
def addContactItem(self, contact):
self.contactsScroll.addScrollBarWidget(UserAvatar(contact))
def addContact(self, nickname : str, avatar_url : str, service_name : str, service_url : str) -> None:
widget = QWidget(self.contactsScroll)
self.contactsScroll.layout().addWidget(widget)
if __name__ == "__main__":
app = QApplication(sys.argv)
w = MainWindow()
app.exec()