如何用pyqt处理html表单?
我正在使用QTextBrowser来显示静态的HTML文档。我想在这些文档里嵌入表单,但我不知道怎么用Python或PyQt来处理这些表单。因为我正在开发的是一个桌面应用,所以QWebView对我来说不是一个很好的选择。
3 个回答
考虑在你的桌面应用程序中实现一个Python服务器(可以看看SimpleHTTPServer模块的相关内容,在这里)。
你可以把静态的HTML页面或者包含表单的页面“提供”给应用程序里的浏览器(通过请求'localhost/...'来获取页面),同时也能接收GET或POST请求。
表单提取器示例 在 [pythondir]\Lib\site-packages\PyQt4\examples\webkit\formextractor 里可以找到更符合Python风格的版本。这个示例应该和PyQt一起安装。
首先,想想你是否真的需要用HTML来做这件事。如果不需要,那就简单多了。如果可以的话,尽量使用标准的Qt表单组件。
如果因为某些原因你确实需要在一个真正的HTML文档里使用HTML表单,那你就不能用QTextBrowser。要知道,QTextBrowser的功能有限,它并不是一个完整的浏览器,而只是一个相对高级的富文本渲染器,支持大部分简单显示所需的HTML内容。但它有两个重要的缺点:不支持JavaScript和表单。QWebView和QtWebkit包里的其他组件使用的是完整的HTML渲染器(WebKit),所以你可以使用表单等功能,获得更多的交互性。你可以给它一个本地路径(或者使用Qt资源),所以它是“桌面应用”这一点并不重要,然后你可以通过JavaScript把页面上的表单数据传递给你的应用。不过,这样做就相当于放弃了很多已经为你完成的工作。
如果可能的话,最好还是用标准的Qt控件来构建你的表单。