For most applications in my company, we prefer fastapi + Jinja to generate HTML pages, and rely on the browser to display that for us. For the few programs that need to be run locally & without browser, we use PySide2 (Qt bindings): the framework is bulkier, but somehow feels more reliable.