gpt4 book ai didi

python - PySide 中的样式表不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 03:27:46 24 4
gpt4 key购买 nike

我似乎没有让样式表在 PySide 中工作。是否有一些不同于 PyQt 的特殊语法?

这是一个小示例代码:

import sys
from PySide import QtGui

class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()

def initUI(self):
okButton = QtGui.QPushButton("OK")
cancelButton = QtGui.QPushButton("Cancel")
testWidget = QtGui.QWidget()
hbox2 = QtGui.QHBoxLayout()
hbox2.addWidget(okButton)
testWidget.setLayout(hbox2)
testWidget.setObjectName("testWidget")
testWidget.setStyleSheet("QWidget#testWidget { \n border: 2px solid gray; \n border-radius: 3px; \n }")
hbox = QtGui.QHBoxLayout()
hbox.addWidget(testWidget)
hbox.addWidget(cancelButton)

self.setLayout(hbox)
self.setGeometry(300, 300, 300, 150)
self.setWindowTitle('Expample')
self.show()

app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

结果是:

PySide

如果我将 from PySide import QtGui 更改为 from PyQt4 import QtGui,我会收到以下结果:

PyQt4

为什么样式表在 PySide 中不起作用?

最佳答案

当谈到样式表时,QWidget 类可能会受到不同的对待。为了使您的示例正常工作,您需要像这样显式启用样式表:

    testWidget.setAttribute(QtCore.Qt.WA_StyledBackground)

但是,我不太清楚为什么 PyQt 和 PySide 在这方面表现不同。来自 PyQt 作者的邮件列表帖子:

建议只有QWidget子类 需要设置WA_StyledBackground 属性。事实上,如果 testWidget 被这样的子类替换:

class SubWidget(QtGui.QWidget): pass
...
testWidget = SubWidget()
# testWidget.setAttribute(QtCore.Qt.WA_StyledBackground)

然后该示例在 PyQt 或 PySide 中不再有效。

这意味着对于 QWidget 的非子类,PySide 行为是错误的。可能存在某种元对象错误,这使得 PySide QWidget 类看起来像是 Qt 的子类。

关于python - PySide 中的样式表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32313469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com