【发布时间】:2019-03-29 11:31:54
【问题描述】:
我正在使用 PyQt5 在 Python 中开发应用程序。这是有问题的代码:
class Dialog(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.layout = QtWidgets.QGridLayout()
self.main = QtWidgets.QWidget()
self.main.setLayout(self.layout)
self.setStyleSheet(QMainWindowStyle)
self.setCentralWidget(self.main)
self.show()
class AppearanceTab(QtWidgets.QWidget):
def __init__(self):
super().__init__()
class SettingsDialog(Dialog):
def __init__(self):
super().__init__()
self.tabs = QtWidgets.QTabWidget(self)
self.tabs.setStyleSheet(QTabWidgetStyle)
self.layout.addWidget(self.tabs)
self.tab_appearance = AppearanceTab()
self.tab_appearance.setStyleSheet(QWidgetStyle)
self.tab_appearance_layout = QtWidgets.QGridLayout()
self.tab_appearance.setLayout(self.tab_appearance_layout)
self.tabs.addTab(self.tab_appearance, "Appearance")
self.tab_server = QtWidgets.QWidget()
self.tab_server.setStyleSheet(QWidgetStyle)
self.tab_server_layout = QtWidgets.QGridLayout()
self.tab_server.setLayout(self.tab_server_layout)
self.tabs.addTab(self.tab_server, "Server")
为什么当self.tab_appearance 是AppearanceTab 实例(应该是QWidget 的副本)时,它的样式与self.tab_server 不同(即背景颜色更改)当self.tab_server 是QWidget 的实例时?
样式表只定义了background-color: #333333 和color: #dddddd。
提前致谢。
编辑:
我认为样式表没有正确应用于AppearanceTab,但是我不知道为什么会这样,因为它只是继承自QWidget。
编辑 2:
可以在on github 找到 MCVE(以及我的项目的其余部分)。
【问题讨论】:
-
能否请您发布MCVE 和css 样式表?
-
是的,我会尝试,但是需要一段时间(要修剪很多代码/我目前在学校)
-
@JacquesGaudin 查看我最近对 MCVE 的编辑(以及我的其余代码)
-
谢谢,我的机器上现在没有 QT,但我可以稍后再试。我的第一个想法是将
QMainWindowStyle = QMainWindow {color: #dddddd; background-color: #333333;}更改为QMainWindowStyle = QMainWindow, QMainWindow * {color: #dddddd; background-color: #333333;},以便主窗口的所有子窗口小部件具有相同的样式。 -
@JacquesGaudin 成功了,谢谢!如果你发布一个答案,我会接受。
标签: python python-3.x pyqt pyqt5 qtstylesheets