Jef*_*ker 6 python pyqt qlabel pyqt5
我使用 PyQt5 编写了一个 gui,最近我想将所有 QLabel 的字体大小增加到特定大小。我可以单独浏览整个代码并更改 qfont。但这效率不高,我想我可以覆盖该类并将所有 QLabel 字体大小设置为所需的大小。
但是,我需要了解用 python 编写的类,这样我才能弄清楚如何覆盖它。但我没有找到任何显示 QLabel 代码的 python 文档。只有 c++ 的文档。因此,我想知道在哪里可以获取所有 PyQt5 的 python 代码(如果存在的话)?如果没有,我如何更改代码中使用的所有 QLabel 的字体大小?
eyl*_*esc 20
要更改所有 QLabel 的字体,有几个选项:
使用 Qt 样式表
app.setStyleSheet("QLabel{font-size: 18pt;}")
Run Code Online (Sandbox Code Playgroud)
custom_font = QFont()
custom_font.setWeight(18);
QApplication.setFont(custom_font, "QLabel")
Run Code Online (Sandbox Code Playgroud)
mus*_*nte 13
虽然提供的答案应该已经为您提供了足够的建议,但我想补充一些见解。
首先,你找不到“用 python 编写的类”,因为(幸运的是)没有。PyQt 是一个绑定:它是实际 Qt 库的接口,该库是用 C++ 编写的。
您可能已经知道,虽然 Python 在当今的计算机上速度相当快,但它并没有那么快,因此使用绑定是一个非常好的折衷方案:它允许 Python 提供的简单语法,并提供 C++ 编译库在幕后提供的所有速度。
嗯,这取决于您将如何管理您的项目。
一般来说,您可以为特定小部件、其子小部件、顶级窗口甚至整个应用程序设置默认字体[大小]。至少有两种方法可以做到这一点。
setFont():设置目标的默认字体;您可以使用 获取当前默认字体something.font(),然后使用font.setPointSize()(或setPointSizeF()对于浮点值,如果字体允许的话),然后调用setFont(font)目标。font[-*]在目标中使用setStyleSheet();目标可能是小部件本身、其父级之一,甚至是QApplication.instance(). 您可以同时使用两者setFont()或setStyleSheet()其中任何一个:
font = self.font()
font.setPointSize(24)
# set the font for the widget:
self.pushButton.setFont(someFont)
# set the font for the top level window (and any of its children):
self.window().setFont(someFont)
# set the font for *any* widget created in this QApplication:
QApplication.instance().setFont(someFont)
# the same as...
self.pushButton.setStyleSheet(''' font-size: 24px; ''')
# etc...
Run Code Online (Sandbox Code Playgroud)
另外,请考虑设置Qt.AA_UseStyleSheetPropagationInWidgetStyles应用程序实例的属性。
默认情况下,Qt对和 都使用字体传播(与调色板传播一样多),但每当设置样式表时,它都会优先,即使它是在任何父窗口小部件上设置的(直到顶级窗口或QApplication实例)。setFontsetStyleSheet
每当应用样式表时,基于CSS 选择器就有各种可能性:
'font-size: 24px;':没有选择器,当前小部件及其任何子部件将使用指定的字体大小;'QClass { font-size: 24px; }':类和子类选择器,任何小部件(包括当前实例)及其同一类/子类的子级将使用指定的字体大小:'QClass[property="value"] {...}':属性选择器,如上所述,但前提是与property值匹配;请注意,值始终带引号,并且 bool 值始终小写;'.QClass {...}':类选择器,但不是子类:如果您使用 QLabel 的子类并且样式表设置为.QLabel,则不会应用该样式表;'QClass#objectName {...}':仅适用于objectName()匹配的小部件;'QParentClass QClass {...}': 申请 QClass 类的子部件QParentClass'QParentClass > QClass {...}': 申请 QClass 类的直接子代的小部件QParentClass请注意,setFont和都setStyleSheet支持传播,但setStyle仅在设置为 QApplication 实例时才适用于子级:如果您使用widget.setStyle()它,则不会对任何小部件的子级产生影响。
最后,记住: