这是一段创建简单 QGroupBox 的代码:
Here's a piece of code that creates a simple QGroupBox:
from PyQt5.QtWidgets import (QApplication, QWidget,
QGroupBox, QGridLayout)
class QGroupBoxTest(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
gb = QGroupBox()
gb.setTitle('QGroupBox title')
appLayout = QGridLayout()
appLayout.addWidget(gb, 0, 0)
self.setLayout(appLayout)
self.setWindowTitle('QGroupBox test window')
self.setGeometry(300, 300, 300, 200)
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
test = QGroupBoxTest()
test.show()
sys.exit(app.exec_())
这就是我的输出:
现在假设我想为它添加一些样式,我通过将这一行添加到 initUI 方法来做到这一点:
Now let's say I want to add some style to it and I do this by adding this line to the initUI method:
gb.setStyleSheet("border: 1px solid gray; border-radius: 5px")
这是输出:
从图片中可以清楚地看到,标题已在框架内结束,现在与框架边框重叠.
As can be clearly seen from the pic, the title has ended up inside the frame and now is overlapping the frame border.
所以我实际上有三个问题:
So I have three questions actually:
1) 可能这是默认的 QT 布局,在第一张图片中使用了平台样式,并处理了边框和标题位置,当您更改样式表时,您会覆盖某些内容,并且会得到丑陋的位置.
1) Probably that's the default QT placement, in the first image the platform style is used, and its take care of borders and title placement, when you change the stylesheet you override something and you get the ugly placement.
2)可以使用QGroupBox:title
控件控制title"位置,例如:
2) You can control the "title" position using the QGroupBox:title
controls, for example:
gb.setStyleSheet('QGroupBox:title {'
'subcontrol-origin: margin;'
'subcontrol-position: top center;'
'padding-left: 10px;'
'padding-right: 10px; }')
会产生这样的结果:
3) 我的建议是为您要更改的样式表属性创建不同的字符串,然后组合它们以创建您想要的样式.
3) My suggestion is to create different strings for the stylesheet attributes you want to change, then compose them to create the style you want.
这篇关于如何在 PyQt5 中自定义 QGroupBox 标题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!