我似乎不能让样式表在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_())
结果是:
如果我将from PySide import QtGui
更改为from PyQt4 import QtGui
,我将收到以下结果:
为什么样式表不能在PySide中工作?在
当涉及样式表时,
QWidget
类可能会有不同的处理。为了使您的示例正常工作,您需要像下面这样显式地启用样式表:但是,我不太清楚为什么PyQt和PySide在这方面表现得不同。以下是PyQt作者的邮件列表:
建议只有}被这样的子类取代:
^{pr2}$QWidget
的子类才需要设置WA_StyledBackground
属性。如果{那么这个例子在PyQt或PySide中都不再有效。在
这意味着PySide行为对于
QWidget
的非子类是错误的。可能存在某种元对象错误,使得PySideQWidget
类看起来像Qt的子类。在相关问题 更多 >
编程相关推荐