QWebEngineView:Mac OSX 上的异常行为
Posted
技术标签:
【中文标题】QWebEngineView:Mac OSX 上的异常行为【英文标题】:QWebEngineView: anormal behavior on Mac OSX 【发布时间】:2016-11-23 13:27:56 【问题描述】:我正在继承 QWebEngineView 类:
class WebViewPerso(QtWebEngineWidgets.QWebEngineView):
def __init__(self, parent=None):
super(WebViewPerso, self).__init__(parent)
print(self.settings().fontFamily(QtWebEngineWidgets.QWebEngineSettings.StandardFont))
# Get the default font and use it in the view
self.settings().setFontFamily(
QtWebEngineWidgets.QWebEngineSettings.StandardFont,
self.font().family())
print(self.settings().fontFamily(QtWebEngineWidgets.QWebEngineSettings.StandardFont))
在 linux 上,两个 print 语句返回:
DejaVu Serif
Sans Serif
它清楚地表明我更改了视图的字体,并且视图现在使用了正确的字体。
在 OSX 上使用完全相同的行,我得到:
Times
.SF NS Text
这也表明字体已更改。但是,视图仍然使用 Times 字体。
我也试过设置线:
FixedFont
SerifFont
SansSerifFont
CursiveFont
FantasyFont
PictographFont
但我的 WebEngineView 仍然使用 Times 字体。
你知道我为什么会观察到这种行为吗?
【问题讨论】:
【参考方案1】:尝试一些它继承的方法,而不仅仅是从 QWebEngineView。
-
来自here 的东西。例如 setFont 传递一个QFont
还可以尝试通过 styleSheet 中的字体系列来更改它。
例如,在我的代码中,我刚刚做了这个:
from PyQt5.QtCore import QUrl
from PyQt5.QtGui import QFont
from PyQt5.QtWebEngineWidgets import QWebEngineView
class WebView(QWebEngineView):
def __init__(self):
super(WebView, self).__init__()
self.init_ui()
def init_ui(self):
self.load(QUrl("http://www.google.com/"))
self.setFont(QFont("Arial Black"))
它在 Linux、Windows、OSX 甚至 Raspberry 中都能正常工作。
【讨论】:
很抱歉,setFont 在 Linux 上不起作用(至少对我而言)。我不知道为什么。是不是因为我用 sethtml 来设置视图的内容? 可能是,虽然我用self...load(...) 我也用setHtml,所以不知道为什么会出现这个问题,抱歉"/ 好的,我有更多信息。在 linux 上,setFont 不起作用,但我仍然可以使用我在问题中展示的技巧。在 Mac OS 上,问题来自字体.NS SF Text
。我可以在任何其他字体上使用我的技巧,但这个字体除外。我猜是一些权限问题:eclecticlight.co/2015/11/10/…。该字体应该仅由系统使用。奇怪的是,我可以在我的软件中的任何地方使用它,除了 QWebEngineView。
这个 f* QWebEngineView 有点麻烦,因为它不再使用 WebKit 和 Chromium,而是从那时起我就遇到了问题。诸如“没有使用沙箱”、“数据请求权限问题”之类的事情,我能想象到的所有问题“(。祝你的问题人好运,让我们振作起来!!
我在 Qt 的 bugtracker 上打开了一个错误。实际上这不是 .SF NS Text 的错,似乎有些字体没有“激活”。见:bugreports.qt.io/browse/QTBUG-57327以上是关于QWebEngineView:Mac OSX 上的异常行为的主要内容,如果未能解决你的问题,请参考以下文章