Python QT样式表不产生任何结果

Python QT样式表不产生任何结果,python,pyqt,Python,Pyqt,我是QT新手,这可能是非常基本的,但我无法在我的消息框中使用样式表 我现在调用的代码来自: self.actionLoad\u公文包\u设置。触发。连接(self.openPortfolioSettings) 是: def openPortfolioSettings(self): # some code QMessageBox.about(self, "Portfolio settings","Portfolio settings loaded successfullly"

我是QT新手,这可能是非常基本的,但我无法在我的消息框中使用样式表

我现在调用的代码来自:

self.actionLoad\u公文包\u设置。触发。连接(self.openPortfolioSettings)
是:

def openPortfolioSettings(self):
     # some code
     QMessageBox.about(self, "Portfolio settings","Portfolio settings loaded successfullly")
     QMessageBox.setStyleSheet(self,".QMessageBox.about {border: 20px solid black;border-radius: 10px;background-color: rgb(1, 1, 1);}")
但是这没有任何作用,消息框像以前一样出现

最后,我要做的是为所有对话框、widows和主窗口设置样式表,这样我就可以使用如下内容:

 my_stylesheet=foo
somewindow.setStyleSheet(my)stylesheet)
非常感谢您的帮助。

QMessageBox.about()是一种静态方法,因此您无法直接获取对象来设置样式表,因此根据您拥有的其他代码以及是否要将相同样式应用于所有QMessageBox,有几种策略

如果您只想应用于生成about方法的QMessageBox,那么想法是过滤,在这种情况下,我假设它是唯一可见的QMessageBox,然后使用
QTimer.singleShot(0,…)
通过其父级使用
findChildren()
方法获取小部件:

从PyQt5导入QtCore、QtGui、qtwidget
类MainWindow(QtWidgets.QMainWindow):
def uuu init uuu(self,parent=None):
超级(主窗口,自我)。\uuuuu初始化\uuuuuuu(父级)
设置\菜单=self.menuBar().addMenu(“设置”)
self.actionLoad\u Portfolio\u Settings=Settings\u menu.addAction(
“加载Portapolio”
)
self.actionLoad\u公文包\u Settings.triggered.connect(
self.openPortfolioSettings
)
@QtCore.pyqtSlot()
def openPortfolioSettings(自):
QtCore.QTimer.singleShot(0,self.after\u关于\u portapolio\u设置)
qtwidts.QMessageBox.about(
自己
“公文包设置”,
“已成功加载公文包设置”,
)
@QtCore.pyqtSlot()
def after_关于手册设置(自我):
对于self.findChildren(QtWidgets.QMessageBox)中的messagebox:
如果messagebox.isVisible():
messagebox.setStyleSheet(
“”“QMessageBox{边框:20px纯黑色;边框半径:10px;背景色:rgb(1,1,1);}”
)
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=qtwidts.QApplication(sys.argv)
w=主窗口()
w、 show()
sys.exit(app.exec_())
相反,如果要将相同样式应用于窗口中的所有QMessageBox子项,请将样式放置在窗口的样式表中:

class主窗口(QtWidgets.QMainWindow):
def uuu init uuu(self,parent=None):
超级(主窗口,自我)。\uuuuu初始化\uuuuuuu(父级)
自选表格(
"""
/*另一种风格*/
QMessageBox{边框:20px纯黑色;边框半径:10px;背景色:rgb(1,1,1);}
"""
)
设置\菜单=self.menuBar().addMenu(“设置”)
self.actionLoad\u Portfolio\u Settings=Settings\u menu.addAction(
“加载Portapolio”
)
self.actionLoad\u公文包\u Settings.triggered.connect(
self.openPortfolioSettings
)
@QtCore.pyqtSlot()
def openPortfolioSettings(自):
qtwidts.QMessageBox.about(
自己
“公文包设置”,
“已成功加载公文包设置”,
)
如果您希望为完整应用程序中的所有QMessageBox应用相同的样式,请在QApplication中设置样式表:

app=qtwidts.QApplication(sys.argv)
应用程序集样式表(
"""
/*另一种风格*/
QMessageBox{边框:20px纯黑色;边框半径:10px;背景色:rgb(1,1,1);}
"""
)

另一种解决方案是不使用QMessage.about()方法,而是创建QMessageBox对象:

def openPortfolioSettings(self):
messagebox=QtWidgets.QMessageBox(
qtwidts.QMessageBox.NoIcon,
“公文包设置”,
“已成功加载公文包设置”,
父母=自己,
)
messagebox.setAttribute(QtCore.Qt.WA_DeleteOnClose)
messagebox.setStyleSheet(
"""
QMessageBox{边框:20px纯黑色;边框半径:10px;背景色:rgb(1,1,1);}
"""
)
messagebox.exec_389;()

看起来您有语法错误,请删除
QMessageBox
前面的点,然后删除
.about
部分。