如何为QPlainTextEdit应用程序设置字体

2024-09-27 21:22:37 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的应用程序中,我可能有多个QPlainTextEdit小部件。我还为这个小部件设置了字体的全局设置,当我在全局设置中更改此字体时,我希望新字体自动传播到应用程序中所有现有的QPlainTextEdit实例。我可能需要使用QApplication.setFont(font, "QPlainTextEdit"),但这似乎适用于其他类型的小部件,但不适用于QPlainTextEdit。在

我现在的工作感觉很差劲。我重写了QPlainTextEdit,并将该子类命名为CodeEditWidget,并进行了以下操作:

def event(self, event):
    if event.type()  == QtCore.QEvent.ApplicationFontChange:
        self.setFont(Settings.codeFont)  # I need to keep the font in some global place
    return super(CodeEditWidget, self).event(event)

嗯,很管用,但我不太喜欢。当然我更喜欢自动传播。如果这是不可能的,我宁愿不必保留它,并通过一些全局设置来传递它。有可能吗?如何以标准方式在这个event()函数中设置字体?在

更新:我把问题缩小到这个片段:

^{pr2}$

虽然注释掉的行将更改两个编辑框的字体,但带setFont(font, "MyText")的行将不起任何作用。在

此问题似乎存在于PyQt5。另一方面,我用PySidePyQt4(relpaced QtWidgets和{}进行了相同的测试,并且它如预期的那样工作。所以这要么是PyQt5中的错误,要么是我做错了什么?在


Tags: 实例selfevent应用程序类型部件字体全局
1条回答
网友
1楼 · 发布于 2024-09-27 21:22:37

我可以在PyQt-5.7中确认这种行为。在

它似乎是一个bug,因为相同的问题并没有出现在latest development snapshot(PyQt5 gpl-5.7.1.dev1611257)中。所以在PyQt-5.7.1发布之前,您似乎必须使用当前的工作环境。在

相关问题 更多 >

    热门问题