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 上的异常行为的主要内容,如果未能解决你的问题,请参考以下文章

Mac OSX 上的 Eclipse CDT 问题

MAC OSX LION:mac 上的 gcc 未编译 wget

mac osx上的邮件系统配置文件

mac osx上的pyside导入错误

Mac OSx的Mamp上的PHP cli

从Mac OSX终端命令行关闭macbook上的wifi: