class SingleLinkPage(QFrame): """ An simple (overly) large image with a external link """ def __init__(self, *args, image=QImage(), heading="", link=QUrl(), **kwargs): super().__init__(*args, **kwargs) self.__link = QUrl() layout = QVBoxLayout() layout.setContentsMargins(0, 0, 0, 0) self.setLayout(layout) self.__heading = QLabel() self.__content = QLabel() self.layout().addWidget(self.__heading) self.layout().addWidget(self.__content, 10, Qt.AlignCenter) self.__shadow = DropShadowFrame() self.__shadow.setWidget(self.__content) self.setImage(image) self.setHeading(heading) self.setLink(link) def setHeading(self, heading): self.__heading.setText("<h2>{}</h2>".format(heading)) def setImage(self, image): pm = pixmap_from_image(image) self.__content.setPixmap(pm) def setLink(self, url): self.__link = QUrl(url) if not self.__link.isEmpty(): self.__content.setCursor(Qt.PointingHandCursor) else: self.__content.unsetCursor() self.__content.setToolTip(self.__link.toString()) def mousePressEvent(self, event): if self.__content.geometry().contains(event.pos()) and \ not self.__link.isEmpty(): QDesktopServices.openUrl(self.__link) event.accept() else: super().mousePressEvent(event)