Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PySide QtWebKit:CSS字体系列无效_Python_Css_Qt_Pyside_Qtwebkit - Fatal编程技术网

Python PySide QtWebKit:CSS字体系列无效

Python PySide QtWebKit:CSS字体系列无效,python,css,qt,pyside,qtwebkit,Python,Css,Qt,Pyside,Qtwebkit,在QWebView中,我使用QWebView.setHtml()动态创建和加载HTML。在我传递给这个方法的HTML字符串中,我有一个部分,在那里我从一个外部文件注入了一个CSS字符串。CSS工作得很好,除了字体系列。字体始终返回QWebView默认的无衬线字体。我可以使用QWebView.settings().setFontFamily(QtWebKit.QWebSettings.StandardFont,“serif”)更改默认字体,但这只会使页面上的所有内容都成为serif字体,而不遵守C

在QWebView中,我使用QWebView.setHtml()动态创建和加载HTML。在我传递给这个方法的HTML字符串中,我有一个
部分,在那里我从一个外部文件注入了一个CSS字符串。CSS工作得很好,除了字体系列。字体始终返回QWebView默认的无衬线字体。我可以使用
QWebView.settings().setFontFamily(QtWebKit.QWebSettings.StandardFont,“serif”)
更改默认字体,但这只会使页面上的所有内容都成为serif字体,而不遵守CSS字体系列值

我的CSS文件中的相关部分:

.page-title {
    color:#BBBBBB;
    font-family:"Times New Roman",Garamond,serif;
}
这不会按预期以衬线字体呈现,而是以通用的无衬线字体呈现。但是,颜色显示没有问题

为了调试,我在调用QWebView.setHtml()之前打印了完整的HTML字符串,并将输出重定向到一个文件。当我在Chromium中打开该文件时,该文件按预期呈现,这使我相信问题不是HTML/CSS问题。如果您感兴趣,这就是输出

编辑:因为我在这里设置了悬赏,这里是一个快速tl;这应该是所有重要内容的总结:

使用PySide,我如何在通过QWebView.setHtml()加载的HTML页面中使QWebView尊重CSS字体系列设置?具体来说,是否有一些秘密的隐藏设置可以打开和关闭这种行为?或者我应该将其报告为框架中的bug吗


如果您想自己测试一下,这里有一个指向我正在从事的项目的GitHub repo的链接。自述文件中列出了依赖项。

在Page.html(您链接的那一个)的标题中

我找到了这个

.page-title {
    color:#BBBBBB;
    font-family:Helvetica, sans-serif;
}
可能尝试删除此项,或将其替换为此项

.page-title {
    color:#BBBBBB;
    font-family:"Times New Roman",Garamond,serif;
}

阅读计算的CSS属性(在开发者工具中),看看是否没有规则覆盖你的动态CSS。除了我已经使用的方法调用之外,我似乎在API中找不到任何相关的东西。然而,在页面中使用JavaScript,我发现该部分的计算样式实际上是Times!因此,它的计算是正确的,但Qt中的某些内容覆盖了它。我对您使用的技术知之甚少。然而,目前我想不出的最后一件事是使用
!重要信息
在CSS规则中。像这样:
字体系列:“泰晤士报新罗马”、“加拉蒙德”、“衬线”!重要的。祝你好运谢谢,但是运气不好。作为测试,我建议在元素的样式属性中包含字体系列声明,看看是否有效。谢谢,是的,我在问这个问题之前和之后已经切换了很多CSS。我在问题中给出的样式可能不一定与当前项目中的样式匹配。现在,我认为页眉应该在Helvetica中,但页面内容应该在Times New Roman中,HTML在页面加载时也是这样计算的,但随后被Qt以某种方式覆盖。很抱歉这里的混乱。我需要查看运行中的错误以检查元素,并查看css是如何检测它的,您可以这样做。。右键点击chrome,“检查元素”。在chrome中,HTML文件正确显示,因此没有“问题元素”需要检查。问题不在于HTML/CSS,而在于Qt。