在PySide/PyQt中对QLabel应用setStyle
在PySide中,我想要改变一个简单的图形用户界面(GUI)窗口的整体风格(一个QLabel对象),具体内容可以参考PySide的文档:
http://srinikom.github.io/pyside-docs/PySide/QtGui/QStyle.html#detailed-description
也就是说,正如链接中所描述的,我想使用setStyle
来把整个GUI的格式改成预定义的某种风格(比如,从Windows
改成Cleanlooks
)。我下面提到的,这个目标和使用setStyleSheet
来调整颜色等是不同的,我已经知道怎么做了。
为了开始,我首先检查了我可以使用的风格类型:
print QtGui.QStyleFactory.keys()
这显示了许多可用的风格,包括'Cleanlooks'。
其次,基于来自三个来源的文档(PySide、ZetCode和Nullege),我尝试把我的QLabel风格改成'Cleanlooks':
QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('Cleanlooks'))
不幸的是,这并没有改变任何东西。实际上,我输入的任何内容都没有改变我的Hello World小部件的任何像素。不知道这是否相关,但当我打印前一行代码的输出时,我总是得到None
。完整的示例代码在下面。
我在Windows 7上,使用Python 2.7在iPython中运行。根据回复,这似乎也是Windows 7中PyQt4的问题,而不仅仅是PySide。
为了更清楚,我并不是在询问如何使用setStyleSheets
来调整我的小部件。这已经有不错的解答了:在Pyside + Python中使用类进行样式设置
我尝试的代码示例(我尝试的其他变体在评论中显示):
# coding: utf-8
import sys
from PySide import QtGui
class HelloWorldApp(QtGui.QLabel):
def __init__(self):
QtGui.QLabel.__init__(self, "Hello, world!")
self.initUI()
def initUI(self):
QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('Cleanlooks'))
self.show()
def main():
#QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('Cleanlooks')) #crashes program
qt_app=QtGui.QApplication(sys.argv)
#QtGui.QApplication.setStyle(QtGui.QStyleFactory.create('Cleanlooks')) #does nothing
exHell=HelloWorldApp()
sys.exit(qt_app.exec_())
if __name__=="__main__":
main()
1 个回答
1