2016-11-23 132 views
1

我继承了QWebEngineView类:QWebEngineView:在Mac OSX anormal行为

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上,两个打印语句返回:

DejaVu Serif 
Sans Serif 

它清楚地表明,我改变了字体为视图,并且视图现在使用正确的字体。

随着OSX完全一样的线,我得到:

Times 
.SF NS Text 

这也预示字体被改变。但是,视图仍然使用Times字体

我也试过在设置栏:

FixedFont 
SerifFont 
SansSerifFont 
CursiveFont 
FantasyFont 
PictographFont 

但我WebEngineView仍然使用Times字体。

你有什么想法为什么我观察到这种行为?

回答

0

尝试一些由它继承的方法,而不仅仅是从QWebEngineView。

  1. 东西从here。例如setFont传递一个QFont
  2. 也尝试通过其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工作得很好,即使是在树莓。

+0

我很抱歉,但setFont不能在Linux上工作(至少对我而言)。我不知道为什么。是否因为我使用setHtml来设置视图的内容? – Rififi

+0

可能,即使我使用self ... load(...)我也使用setHtml,所以不知道为什么你有这个问题,对不起“/ – yurisnm

+0

好吧,我有更多的信息。在linux上,setFont但我仍然可以使用我在问题中展示的技巧,在Mac OS上,问题来自于'.NS SF Text''字体,我可以在任何其他字体上使用我的技巧,但这一个。我猜一些权限问题:https://eclecticlight.co/2015/11/10/qa-how-to-use-san-francisco-font-in-docs/。这个字体应该只用于奇怪的是,我可以在我的软件中的任何地方使用它,除了在QWebEngineView中。 – Rififi