PyQt5图形和特效之窗口风格(一)

设置窗口风格

可以为每个QWidget都设置风格

setStyle(QStyle style)

获取当前平台支持的原有的QStyle样式

QstyleFactory.keys()

对QApplication设置QStyle样式

QApplication.setStyle(QStyleFactory.create('WindowsXP'))

如果其他Widget没有设置QStyle,默认使用QApplication设置的style

实例:设置窗口风格

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *class AppWidget(QWidget):def __init__(self,parent=None):super(AppWidget, self).__init__(parent)#水平布局Hloyout=QHBoxLayout()#实例化标签与列表控件self.styleLabel=QLabel('set Style')self.styleComboBox=QComboBox()#从QStyleFactory中增加多个显示样式到列表控件self.styleComboBox.addItems(QStyleFactory.keys())#选择当前窗口的风格index=self.styleComboBox.findText(QApplication.style().objectName(),Qt.MatchFixedString)#设置当前窗口的风格self.styleComboBox.setCurrentIndex(index)#通过combobox控件选择窗口风格self.styleComboBox.activated[str].connect(self.handlestyleChanged)#添加控件到布局,设置窗口布局Hloyout.addWidget(self.styleLabel)Hloyout.addWidget(self.styleComboBox)self.setLayout(Hloyout)#改变窗口风格def handlestyleChanged(self,style):QApplication.setStyle(style)
if __name__ == '__main__':app=QApplication(sys.argv)widgetApp=AppWidget()widgetApp.show()sys.exit(app.exec_())

运行效果如图,可以改变三种window下自带的样式
这里写图片描述

设置窗口样式


PyQt中常见基本窗口类型

窗口类型描述
Qt.Widget默认窗口,有最小化,最大化,关闭按钮
Qt.Window普通窗口,有最小化,最大化,关闭按钮
Qt.Dialog会话框窗口,有问号和关闭按钮
Qt.Popup弹出窗口,窗口无边框
Qt.ToolTip提示窗口,窗口无边框,无任务栏
Qt.SplashScreen闪屏,窗口无边框,无任务栏
Qt.SubWindow子窗口,窗口无按钮,但有标题

自定义顶层窗口外观标志

属性描述
Qt.MSWindowsFixedSizeDialogHint固定窗口,无法调整大小
Qt.FramelessWindowHint窗口无边框
Qt.CustomizeWindowHint有边框,无标题栏与按钮,不能移动和拖动
Qt.WindowTitleHint添加标题栏与关闭按钮
Qt.WindowSystemMenuHint添加系统目录和关闭按钮
Qt.WindowMaximizeButtonHint激活最大化按钮与关闭按钮,禁止最小化按钮
Qt.WindowMinimizeButtonHint激活最小化按钮与关闭按钮,禁止最大化按钮
Qt.WindowMinMaxButtonsHint激活最大化与最小化按钮和关闭按钮
Qt.WindowCloseButtonHint添加一个关闭按钮
Qt.WindowContextHelpButtonHint添加问号与关闭按钮,像对话框一样
Qt.WindowStaysOnTopHint窗口始终处于顶部位置
Qt.windowStaysOnButtonHint窗口始终处于底部位置

实例:窗口样式演示

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QMainWindow, QApplicationclass MainWIndow(QMainWindow):def __init__(self, parent=None):super(MainWIndow, self).__init__(parent)self.resize(400, 200)self.setWindowTitle('设置窗口样式的例子')# 设置无边框窗口样式self.setWindowFlags(Qt.FramelessWindowHint)#子窗口,窗口无按钮 ,但有标题,可注释掉观察效果self.setWindowFlags(Qt.SubWindow)self.setObjectName("MainWindow")self.setStyleSheet("#MainWindow{border-image:url(images/python.jpg);}")if __name__ == '__main__':app = QApplication(sys.argv)win = MainWIndow()win.show()sys.exit(app.exec_())

运行效果如图
无边框
这里写图片描述
子窗口,窗口无按钮,但有标题
这里写图片描述

实例:自定义无边框窗口

import sys
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtCore import *class MyWindow(QMainWindow):'''自定义窗口类''''''构造函数'''def __init__(self,parent=None):'''调用父类构造函数'''super(MyWindow, self).__init__(parent)#设置窗口标志,无边框self.setWindowFlags(Qt.FramelessWindowHint)#设置窗口背景颜色(采用QSS)self.setStyleSheet('''background-color:blue''')def showMaximized(self):'''最大化窗口'''#得到桌面控件desktop=QApplication.desktop()#得到桌面可显示的尺寸rect=desktop.availableGeometry()#设置窗口的尺寸self.setGeometry(rect)#显示窗口self.show()
#主函数
if __name__ == '__main__':#声明变量app=QApplication(sys.argv)#创建窗口window=MyWindow()# todo 调用最大化显示窗口window.showMaximized()#应用程序事件循环sys.exit(app.exec_())

运行效果如图
这里写图片描述

代码分析

设置窗口标志,实现无边框效果

  #设置窗口标志,无边框self.setWindowFlags(Qt.FramelessWindowHint)

首先,得到屏幕的尺寸

        #得到桌面控件desktop=QApplication.desktop()#得到桌面可显示的尺寸rect=desktop.availableGeometry()

然后设置窗口尺寸为屏幕可以显示的尺寸并显示

        #设置窗口的尺寸self.setGeometry(rect)#显示窗口self.show()

  • 设置窗口风格
    • 实例:设置窗口风格
  • 设置窗口样式
    • PyQt中常见基本窗口类型
    • 自定义顶层窗口外观标志
    • 实例:窗口样式演示
    • 实例:自定义无边框窗口
      • 代码分析

相关源码及素材
https://download.csdn.net/download/jia666666/10616087


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部