[Python自学] PyQT5-窗口风格、窗口样式、GIF动画、窗口透明
一、修改窗口的风格(控件风格)
修改Window的风格,只会响应窗口中的所有控件,而对窗口的标题栏等没有影响(标题栏是受系统风格影响的)。
import sys # 导入QT,其中包含一些常量,例如颜色等 from PyQt5.QtCore import Qt from PyQt5 import QtCore # 导入常用组件 from PyQt5.QtWidgets import QApplication, QWidget, QStyleFactory from PyQt5.QtWidgets import QVBoxLayout, QComboBox # 使用调色板等 from PyQt5.QtGui import QIcon class DemoWin(QWidget): def __init__(self): super(DemoWin, self).__init__() self.initUI() def initUI(self): self.resize(400, 200) self.stylesComboBox = QComboBox() # 将支持的风格加到comboBox中 self.stylesComboBox.addItems(QStyleFactory.keys()) # 获取当前窗口的风格 print(QApplication.style().objectName()) # 当前为windowsvista风格 # 获取当前风格对应的index index = self.stylesComboBox.findText(QApplication.style().objectName(), QtCore.Qt.MatchFixedString) # index=0 # 将comboBox的值设置为当前index self.stylesComboBox.setCurrentIndex(index) # 将comboBox改变值的信号和槽函数绑定 self.stylesComboBox.activated[str].connect(self.handleStyleChanged) layout = QVBoxLayout() layout.addWidget(self.stylesComboBox) self.setLayout(layout) # 添加窗口标题 self.setWindowTitle("StyleChangeDemo") def handleStyleChanged(self, style): QApplication.setStyle(style) if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 创建一个主窗口 mainWin = DemoWin() # 显示 mainWin.show() # 主循环 sys.exit(app.exec_())
实现效果:
二、窗口样式(窗口风格)
1.简单Demo
import sys # 导入QT,其中包含一些常量,例如颜色等 from PyQt5.QtCore import Qt # 导入常用组件 from PyQt5.QtWidgets import QApplication, QMainWindow # 使用调色板等 from PyQt5.QtGui import QIcon class DemoWin(QMainWindow): def __init__(self): super(DemoWin, self).__init__() self.initUI() def initUI(self): self.resize(400, 250) # 设置最大化按钮,最小化按钮,关闭按钮,以及窗口一直在最顶层 self.setWindowFlags( Qt.WindowMaximizeButtonHint | Qt.WindowMinimizeButtonHint | Qt.WindowCloseButtonHint | Qt.WindowStaysOnTopHint) # 为窗口设置一个对象名,方便使用QSS设置样式 self.setObjectName("MainWindow") # 设置QSS样式 self.setStyleSheet("#MainWindow{border-image:url('./images/ailusha.png');}") # 添加窗口标题 self.setWindowTitle("窗口样式Demo") if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 创建一个主窗口 mainWin = DemoWin() # 显示 mainWin.show() # 主循环 sys.exit(app.exec_())
实现效果:
可以看到,窗口右上方有最大化按钮、最小化按钮和关闭按钮。而且不管光标是否在窗口上,窗口都是现实在最顶层的。
2.取消边框
self.setWindowFlags(Qt.FramelessWindowHint)
三、状态GIF动画
import sys # 导入QT,其中包含一些常量,例如颜色等 from PyQt5.QtCore import Qt # 导入常用组件 from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtWidgets import QLabel # 使用调色板等 from PyQt5.QtGui import QIcon, QMovie class DemoWin(QMainWindow): def __init__(self): super(DemoWin, self).__init__() self.initUI() def initUI(self): # 将窗口设置为动图大小 self.resize(500, 272) # 使用label来显示动画 self.label = QLabel("", self) # label大小设置为动画大小 self.label.setFixedSize(500, 272) # 设置动画路径 self.movie = QMovie("./images/timg.gif") # 将动画添加到label中 self.label.setMovie(self.movie) # 开始播放动画 self.movie.start() # 添加窗口标题 self.setWindowTitle("GIFDemo") if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 创建一个主窗口 mainWin = DemoWin() # 显示 mainWin.show() # 主循环 sys.exit(app.exec_())
效果:
四、透明和半透明窗口
import sys # 使用调色板等 from PyQt5.QtGui import QIcon # 导入QT,其中包含一些常量,例如颜色等 # 导入常用组件 from PyQt5.QtWidgets import QApplication, QMainWindow from PyQt5.QtWidgets import QPushButton class DemoWin(QMainWindow): def __init__(self): super(DemoWin, self).__init__() self.initUI() def initUI(self): # 将窗口设置为动图大小 self.resize(500, 272) # 添加一个按钮(按钮也跟着窗口透明) self.btn = QPushButton("确定", self) # 设置窗口透明度 self.setWindowOpacity(0.5) # 添加窗口标题 self.setWindowTitle("WinOpacityDemo") if __name__ == '__main__': app = QApplication(sys.argv) app.setWindowIcon(QIcon("images/icon.ico")) # 创建一个主窗口 mainWin = DemoWin() # 显示 mainWin.show() # 主循环 sys.exit(app.exec_())
效果:
====
保持学习,否则迟早要被淘汰*(^ 。 ^ )***