PyQt5之窗口风格

PyQt5之窗口风格

使用PyQt实现的窗口样式,默认使用的就是当前操作系统的原生窗口样式。如果其他Widget没有设置QStyle,则默认使用QApplication设置的QStyle。

一、设置窗口控件的风格

setStyle(QStyle style) #可以为每个Widget都设置风格
QStyleFactory.keys() #获得当前平台支持的原有的QStyle样式
QApplication.setStyle(QStyleFactory.create("WindowsXP")) #对QApplication设置QStyle样式

范例:

import sys
from PyQt5 import QtCore
from 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_())

运行效果如下:

在这里插入图片描述


二、设置窗口样式

  • PyQt有如下几种基本的窗口类型:
  1. Qt.Widget,默认窗口,有最小化、最大化、关闭按钮;
  2. Qt.Window,普通窗口,有最小化、最大化、关闭按钮;
  3. Qt.Dialog,对话框窗口,有问号和关闭按钮;
  4. Qt.Popup,弹出窗口,窗口无边框;
  5. Qt.ToolTip,提示窗口,窗口无边框,无任务栏;
  6. Qt.SplashScreen,闪屏,窗口无边框,无任务栏;
  7. Qt.SubWindow,子窗口,窗口无按钮,但有标题。
  • 自定义顶层窗口外观标志:
  1. Qt.MSWindowsFixedSizeDialogHint,窗口无法调整大小;
  2. Qt.FramelessWindowHint,窗口无边框;
  3. Qt.CustomizeWindowHint,有边框但无标题栏和按钮,不能移动和拖动;
  4. Qt.WindowTitleHint,添加标题栏和一个关闭按钮;
  5. Qt.WindowSystemMenuHint,添加系统目录和一个关闭按钮;
  6. Qt.WindowMaximizeButtonHint,激活最大化和关闭按钮,禁止最小化按钮;
  7. Qt.WindowMinimizeButtonHint,激活最小化和关闭按钮,禁止最大化按钮;
  8. Qt.WindowMinMaxButtonsHint,激活最大化、最小化按钮和关闭按钮;
  9. Qt.WindowCloseButtonHint,添加一个关闭按钮;
  10. Qt.WindowContextHelpButtonHint,添加问号和关闭按钮,像对话框一样;
  11. Qt.WindowStaysOnTopHint,窗口始终处于顶层位置;
  12. Qt.WindowStaysOnBottomHint ,窗口始终处于底层位置。
import sys
from PyQt5 import QtCore
from 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 sys
from PyQt5 import QtCore
from 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_())

运行效果如下:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值