定制窗口样式,以实现统一的窗口风格和美化窗口界面。
可以为每个Widget设置风格
setStyle(QStyle style)
获得当前平台支持的原有的QStyle样式
QStyleFacTory.keys()
对QApplication设置QStyle样式
QApplication.setStyle(QStyleFactory.create("WindowsXP"))
案例——设置窗口风格
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5 import QtCore
from PyQt5.QtGui import *
class AppWidget(QWidget):
def __init__(self,parent = None):
super(AppWidget, self).__init__(parent)
horizontalLayout = QHBoxLayout()
self.styleLabel = QLabel("设置样式:")
self.styleComboBox = QComboBox()
self.styleComboBox.addItems(QStyleFactory.keys())
index = self.styleComboBox.findText(QApplication.style().objectName(),QtCore.Qt.MatchFixedString)
self.styleComboBox.setCurrentIndex(index)
self.styleComboBox.activated[str].connect(self.handleStyleChanged)
horizontalLayout.addWidget(self.styleLabel)
horizontalLayout.addWidget(self.styleComboBox)
self.setLayout(horizontalLayout)
def handleStyleChanged(self,style):
QApplication.setStyle(style)
if __name__ == '__main__':
from pyqt5_plugins.examples.exampleqmlitem import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
win = AppWidget()
win.show()
sys.exit(app.exec_())
PyQt 使用setWindowFlags(Qt.WindowFlags)函数设置窗口样式,其具体参数如下:
案例——使用setWindowFlags函数
from PyQt5.QtCore import Qt
import sys
from PyQt5.QtWidgets import QMainWindow , QApplication
class MainWindow(QMainWindow):
def __init__(self,parent = None):
super(MainWindow, self).__init__(parent)
self.resize(400 , 200)
self.setWindowTitle("设置窗口样式案例")
self.setWindowFlags(Qt.FramelessWindowHint)
self.setObjectName("MainWindow")
self.setStyleSheet("#MainWindow{border-image:url(images/python.jpg);}")
if __name__ == '__main__':
from pyqt5_plugins.examples.exampleqmlitem import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
app = QApplication(sys.argv)
win = MainWindow()
win.show()
sys.exit(app.exec_())
随着互联网的发展,越来越多的软件在初始化时,采用在用户的显示屏幕中全屏展开的形式。在接下来的例子中,开发一个自定义的无边框窗口,它可以占用100%的用户显示屏幕。
设置窗口标志,实现无边框效果
self.setWindowFlags(Qt.FramelessWindowHint)
覆盖实现最大化函数
首先,应得到屏幕可显示尺寸,需要用到QDeskWidget类的availableGeometry()函数。
desktop = QApplication.desktop()
rect = desktop.availableGeometry()
设置窗口尺寸为屏幕可显示尺寸并显示
self.setGeometry(rect)
self.show()
案例——全屏显示
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
from PyQt5.QtCore import Qt
### 自定义窗口类
class MyWindow(QMainWindow):
'''自定义窗口类'''
### 构造函数
def __init__(self, parent=None):
'''构造函数'''
# 调用父类构造函数
super(MyWindow, self).__init__(parent)
# 设置窗口标记(无边框 )
self.setWindowFlags(Qt.FramelessWindowHint)
# 便于显示,设置窗口背景颜色(采用QSS)
self.setStyleSheet('''background-color:red; ''')
###覆盖函数
def showMaximized(self):
'''最大化'''
# 得到桌面控件
desktop = QApplication.desktop()
# 得到屏幕可显示尺寸
rect = desktop.availableGeometry()
# 设置窗口尺寸
self.setGeometry(rect)
# 设置窗口显示
self.show()
### 主函数
if __name__ == "__main__":
from pyqt5_plugins.examples.exampleqmlitem import QtCore
QtCore.QCoreApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
'''主函数'''
# 声明变量
app = QApplication(sys.argv)
# 创建窗口
window = MyWindow()
# 调用最大化显示
window.showMaximized()
# 应用程序事件循环
sys.exit(app.exec_())