宽度、高度和边距在 PySide6 中的 QT 样式 Sheet 中不起作用
Width, Height, and Margin doesn't work in QT Style Sheet in PySide6
所以我有一个名为 main.qss
的 Qt 样式 Sheet,样式 sheet 我正在尝试设置宽度和高度,但它不起作用,它只是保持不变。同样的事情也发生在边距上。
这是 QSS:
QFrame#mainFrame {
background-color: #282C34;
}
QFrame#menuFrame {
background-color: #21252B;
}
QPushButton.menuButton {
background-color: #21252B;
padding-left: 12px;
padding-top: 1px;
padding-bottom: 1px;
border: 0;
font-family: "Times New Roman";
font-size: 20pt;
color: #FFFFFF;
width: 300pt; <-- Problem here
height: 15px; <-- Problem here
}
QPushButton.menuButton:hover {
background-color: #282C34;
}
QPushButton.menuButton:pressed {
background-color: #BD93F9;
}
这是我的 QPushButton:
self.menu_toggle_button = QtWidgets.QPushButton(self.menu_frame)
self.menu_toggle_button.setIcon(QtGui.QPixmap("menu_icons/menu.png"))
self.menu_toggle_button.setText(" Hide")
self.menu_toggle_button.setObjectName("menuToggleButton")
self.menu_toggle_button.setProperty("class", "menuButton")
self.menu_toggle_button.setIconSize(QtCore.QSize(20, 20))
那我做错了什么?
我知道这是可行的,因为在 Qt Style Sheet 参考中,可以在这里找到:https://doc.qt.io/qtforpython-6/overviews/stylesheet-reference.html?highlight=stylesheet,它说 QPushButtton 支持宽度、高度和边距。
您的样式表不起作用有两个原因:
width
(和height
)属性通常不适用于小部件,但仅适用于子控件,如explained in the docs:
Warning: Unless otherwise specified, this property has no effect when set on widgets. If you want a widget with a fixed width, set the min-width and max-width to the same value.
- “点”分隔符在 python 中不起作用,但在 css 中起作用:它是 class selector:
.QPushButton
Matches instances of QPushButton, but not of its subclasses.
如果你想匹配objectName
属性,你需要ID选择器:
QPushButton#menuButton {...}
考虑到虽然 Qt 样式表支持这些属性,但通常最好将这些设置留给布局管理器并直接使用小部件函数(setFixedSize()
、setFixedWidth()
、setFixedHeight()
).
最后,边距不起作用,因为您正在使用 填充。 Qt 使用与 CSS 相同的概念也用于 Box Model:
因此,您设置的内边距位于按钮的 border 和 content(图标 and/or文本,即 QStyle SE_PushButtonContents
子元素)。您要查找的是 边距.
所以我有一个名为 main.qss
的 Qt 样式 Sheet,样式 sheet 我正在尝试设置宽度和高度,但它不起作用,它只是保持不变。同样的事情也发生在边距上。
这是 QSS:
QFrame#mainFrame {
background-color: #282C34;
}
QFrame#menuFrame {
background-color: #21252B;
}
QPushButton.menuButton {
background-color: #21252B;
padding-left: 12px;
padding-top: 1px;
padding-bottom: 1px;
border: 0;
font-family: "Times New Roman";
font-size: 20pt;
color: #FFFFFF;
width: 300pt; <-- Problem here
height: 15px; <-- Problem here
}
QPushButton.menuButton:hover {
background-color: #282C34;
}
QPushButton.menuButton:pressed {
background-color: #BD93F9;
}
这是我的 QPushButton:
self.menu_toggle_button = QtWidgets.QPushButton(self.menu_frame)
self.menu_toggle_button.setIcon(QtGui.QPixmap("menu_icons/menu.png"))
self.menu_toggle_button.setText(" Hide")
self.menu_toggle_button.setObjectName("menuToggleButton")
self.menu_toggle_button.setProperty("class", "menuButton")
self.menu_toggle_button.setIconSize(QtCore.QSize(20, 20))
那我做错了什么?
我知道这是可行的,因为在 Qt Style Sheet 参考中,可以在这里找到:https://doc.qt.io/qtforpython-6/overviews/stylesheet-reference.html?highlight=stylesheet,它说 QPushButtton 支持宽度、高度和边距。
您的样式表不起作用有两个原因:
width
(和height
)属性通常不适用于小部件,但仅适用于子控件,如explained in the docs:
Warning: Unless otherwise specified, this property has no effect when set on widgets. If you want a widget with a fixed width, set the min-width and max-width to the same value.
- “点”分隔符在 python 中不起作用,但在 css 中起作用:它是 class selector:
.QPushButton
Matches instances of QPushButton, but not of its subclasses.
如果你想匹配objectName
属性,你需要ID选择器:
QPushButton#menuButton {...}
考虑到虽然 Qt 样式表支持这些属性,但通常最好将这些设置留给布局管理器并直接使用小部件函数(setFixedSize()
、setFixedWidth()
、setFixedHeight()
).
最后,边距不起作用,因为您正在使用 填充。 Qt 使用与 CSS 相同的概念也用于 Box Model:
因此,您设置的内边距位于按钮的 border 和 content(图标 and/or文本,即 QStyle SE_PushButtonContents
子元素)。您要查找的是 边距.