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