Python 如何使QWebView/QWebPage默认为衬线字体?

Python 如何使QWebView/QWebPage默认为衬线字体?,python,fonts,pyqt,default,qwebkit,Python,Fonts,Pyqt,Default,Qwebkit,使用PyQt4,我创建了一个QWebView,然后使用其setHtml()方法加载它。HTML在大多数方面显示正确,但始终使用默认的无衬线字体 当外部浏览器(如Firefox)加载相同的HTML纯文本时,它将以默认的衬线字体显示。我希望webview也这样做 我已经阅读了QWebView、QWebPage和QWebSettings的文档,没有找到任何方法来设置默认的“标准”或“比例”字体,与浏览器的首选项设置类似。我查看了QStyleSheets,但它们似乎不适用于QWebView/WebPag

使用PyQt4,我创建了一个QWebView,然后使用其setHtml()方法加载它。HTML在大多数方面显示正确,但始终使用默认的无衬线字体

当外部浏览器(如Firefox)加载相同的HTML纯文本时,它将以默认的衬线字体显示。我希望webview也这样做


我已经阅读了QWebView、QWebPage和QWebSettings的文档,没有找到任何方法来设置默认的“标准”或“比例”字体,与浏览器的首选项设置类似。我查看了QStyleSheets,但它们似乎不适用于QWebView/WebPage。

QWebSettings似乎具备您所需的一切:

enum FontFamily { StandardFont, FixedFont, SerifFont, SansSerifFont, CursiveFont, FantasyFont }
void setFontFamily ( FontFamily which, const QString & family )

我还没有测试过,但你遗漏了什么?您可能希望查看基于Qt Webkit的web浏览器。

要为所有网页设置默认字体,请使用更改的字体系列,并更改的字体大小:


出于好奇,为什么不在内容中设置一些CSS呢?像
body{font:serif}
这样简单的东西应该可以做到这一点……对于这个应用程序要编辑的HTML文档,有一个标准,它们不指定字体或字体系列,而是默认比例字体。这样用户就可以始终控制浏览浏览器的首选项。我搞不懂的是,如何用QWebPage.Nope做一个“浏览器优先”等价物。setFontFamily建立用于通用FontFamily的特定字体名称,例如,当我打印查询FontFamily(QWebSettings.SerifFont)时,我会得到“Times New Roman”。我可以调用setFontFamily(QWebSettings.serifont,“Palatino”)和viola,fontFamily将回显“Palatino”。大吼——网页仍然使用默认的Sansserfont显示。问题是,如何让QWebPage使用Serifont而不是Sansserfont进行渲染…我应该说,我认为这就是问题所在,我可能错了(我经常错),我可能在这里遗漏了一些明显的东西,但你不能只设置Sansserfont的字体吗?哦,将Sansserfont设置为“Palatino”-我的天哪,这是允许的吗?我的电脑可能会爆炸——等等,我试试……不。我做了settings.setFontFamily(QWebSettings.sansserfont,QString(“Palatino”))并用settings.fontFamily读回了它,结果没有什么不同。我还做了QWebSettings.globalSettings().setFontFamily(QWebSettings.sansserfont,QString(“Palatino”))。显示的页面中没有任何更改,仍然是sans-serif格式。如果html包含未定义的字体系列(例如p{font-family:“xyz”}),则同样的事情不起作用。在这种情况下,网页没有使用默认字体为什么?@Ashish。对不起,我不知道。其他人可能会这样做,所以你应该问一个新问题。
settings = QtWebKit.QWebSettings.globalSettings()
settings.setFontFamily(QtWebKit.QWebSettings.StandardFont, 'Times New Roman')
settings.setFontSize(QtWebKit.QWebSettings.DefaultFontSize, 12)