Решение
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):
ImagesLoaded = {}
def __init__(self, url : str, *args, **kwargs):
super().__init__(*args, **kwargs)
self.image = QImage()
if not self.ImagesLoaded.get(url):
import requests
content = requests.get(url).content
self.image.loadFromData(content)
self.ImagesLoaded[url] = content
else:
self.image.loadFromData(self.ImagesLoaded[url])
self.pixmap = QPixmap.fromImage(self.image)
self.setPixmap( self.pixmap )
def resizeEvent(self, event):
self.setPixmap(self.pixmap.scaled(event.size().width(), event.size().height()))
class UserAvatar(QWidget):
def __init__(self, contact, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setFixedSize(200, 40)
class MainWindow(QMainWindow):
def resizeEvent(self, event):
self.contactsScroll.setGeometry(0,0, 200, self.height())
QMainWindow.resizeEvent(self, event)
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.setStyleSheet("""background-color: rgba(0,0,0,0);
""")
layout = QVBoxLayout()
layout.setContentsMargins(0,0,0,0)
layout.setSpacing(0)
self.contactsScroll._layout = layout
for i in range (10):
self.addContact("NICKNAME", "https://www.svgrepo.com/show/384674/account-avatar-profile-user-11.svg", "SERVICE_NAME", "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSpJ27FVfkM_2ubo4TV6iQXfET93AFER9M6xA&s")
self.addContact("NICKNAME", "https://www.svgrepo.com/show/384674/account-avatar-profile-user-11.svg", "SERVICE_NAME", "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSpJ27FVfkM_2ubo4TV6iQXfET93AFER9M6xA&s")
self.addContact("NICKNAME", "https://img.freepik.com/premium-vector/professional-male-avatar-profile-picture-employee-work_1322206-66590.jpg", "SERVICE_NAME", "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR8aMugg7LWDXqkWc-9JlApM4MLPXhi-EPDYA&s")
self.show()
def addContact(self, nickname : str, avatar_url : str, service_name : str, service_url : str) -> None:
widget = QWidget()
widget.setGeometry(0,0,200, 50)
widget.setFixedHeight(50)
widget.setFixedWidth(200)
widget.setStyleSheet("""background-color: rgba(0,0,0,155)""")
labelNickname = QLabel(nickname, parent=widget)
labelNickname.move(widget.height(), 0)
avatar = UrlImage(avatar_url, parent=widget)
avatar.resize(widget.height(), widget.height())
avatar.setStyleSheet("background-color: rgba(0,0,0,0)")
serviceImage = UrlImage(service_url, parent=avatar)
serviceImage.resize(avatar.width() / 2, avatar.height() / 2)
serviceImage.move(avatar.width() / 2, avatar.height() / 2)
self.contactsScroll._layout.addWidget(widget)
self.contactsScroll._layout.addStretch()
widget2 = QWidget()
widget2.setLayout(self.contactsScroll._layout)
self.contactsScroll.setWidget(widget2)
if __name__ == "__main__":
app = QApplication(sys.argv)
w = MainWindow()
app.exec()