本文共 3069 字,大约阅读时间需要 10 分钟。
使用PyQt实现的窗口样式,默认使用的就是当前操作系统的原生窗口样式。如果其他Widget没有设置QStyle,则默认使用QApplication设置的QStyle。
setStyle(QStyle style) #可以为每个Widget都设置风格
QStyleFactory.keys() #获得当前平台支持的原有的QStyle样式
QApplication.setStyle(QStyleFactory.create("WindowsXP")) #对QApplication设置QStyle样式
范例:
import sysfrom PyQt5 import QtCorefrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Demo(QWidget): def __init__(self): super().__init__() self.setWindowTitle('设置窗口控件的风格') layout = QHBoxLayout(self) self.label = QLabel("Set Style:") self.combobox = QComboBox() self.combobox.addItems(QStyleFactory.keys())#增加多个显示样式 index = self.combobox.findText(QApplication.style().objectName(),QtCore.Qt.MatchFixedString)#获取当前窗口风格 self.combobox.setCurrentIndex(index)#设置当前窗口风格 self.combobox.activated[str].connect(self.stylechange)#设置槽函数,当Comobox中值改变时,窗口风格也随之改变 layout.addWidget(self.label) layout.addWidget(self.combobox) def stylechange(self,style): QApplication.setStyle(style)if __name__ == "__main__": app = QApplication(sys.argv) form = Demo() form.show() sys.exit(app.exec_())
运行效果如下:
import sysfrom PyQt5 import QtCorefrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Demo(QMainWindow): def __init__(self): super().__init__() self.resize(400,200) self.setWindowTitle('设置窗口样式') self.setWindowFlags(Qt.FramelessWindowHint)#设置无边框窗口样式if __name__ == "__main__": app = QApplication(sys.argv) form = Demo() form.show() sys.exit(app.exec_())
运行效果如下:
使用自定义的无边框窗口:
import sysfrom PyQt5 import QtCorefrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQt5.QtCore import *class Demo(QMainWindow): def __init__(self): super().__init__() self.resize(400,200) self.setWindowTitle('设置窗口样式') self.setWindowFlags(Qt.FramelessWindowHint)#设置无边框窗口样式 self.setStyleSheet('background-color:pink;')#采用CSS将窗口设置粉红色 def showMaximized(self): desk = QApplication.desktop()#得到桌面控件 rect = desk.availableGeometry()#得到屏幕可显示尺寸 self.setGeometry(rect)#设置窗口尺寸 self.show()#显示窗口if __name__ == "__main__": app = QApplication(sys.argv) form = Demo() form.showMaximized()#调用最大化显示窗口 sys.exit(app.exec_())
运行效果如下:
转载地址:http://mtozi.baihongyu.com/