NOTE : hacker provider ... :

Simple example with the py3Dmol:
import os
import sys
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout
from PyQt6.QtWebEngineWidgets import QWebEngineView
from PyQt6.QtCore import QUrl
import py3Dmol
SEROTONIN_SMILES = "C1=CC2=C(C=C1)C(=CN2)CCN"
def generate_html(smiles):
view = py3Dmol.view(width=800, height=600)
view.addModel(smiles, "smiles")
view.setStyle({"stick": {}})
view.zoomTo()
return view._make_html()
class MoleculeViewer(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("Structura 3D – Serotonină")
layout = QVBoxLayout(self)
self.browser = QWebEngineView()
html = generate_html(SEROTONIN_SMILES)
# IMPORTANT: QUrl, nu string!
self.browser.setHtml(html, baseUrl=QUrl("https://localhost/"))
layout.addWidget(self.browser)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MoleculeViewer()
window.resize(900, 700)
window.show()
sys.exit(app.exec())