Pyqt5常用技巧
翻译功能
多个饼图的制作
背景图片的调整
要了解控件有控件的颜色,背景色也有他的颜色,类似于ppt中的图层上移和下移。
所以要想做好一个统一的样式要配好颜色(最重要的),其次还要配置好控件的颜色比例,还有能不能把控件虚拟化(就是移入到背景色的下面)
设置整体背景色
1.使用QSS对mainwindow设置
win = QMainWindow()
win.setStyleSheet("#MainWindow{background-color: yellow}")
2.创建主题盒子,加入全局的背景色样式
本例是加入饼图的全局样式颜色。然后再根据盒子样式的颜色匹配对应的全局背景样式颜色
def createThemeBox(self): # 创建主题盒子
themeComboBox = QComboBox()
# 图标自带的颜色主题
themeComboBox.addItem("Light", QChart.ChartThemeLight)
themeComboBox.addItem("Blue Cerulean", QChart.ChartThemeBlueCerulean)
themeComboBox.addItem("Dark", QChart.ChartThemeDark)
themeComboBox.addItem("Brown Sand", QChart.ChartThemeBrownSand)
themeComboBox.addItem("Blue NCS", QChart.ChartThemeBlueNcs)
themeComboBox.addItem("High Contrast", QChart.ChartThemeHighContrast)
themeComboBox.addItem("Blue Icy", QChart.ChartThemeBlueIcy)
return themeComboBox
### 本例的self.windown() widget的自带的函数 猜的。但设定背景色使用setColor,调整背景色使用QPalette.Window
pal = self.window().palette() # 设定全局背景颜色
if theme == QChart.ChartThemeLight:
pal.setColor(QPalette.Window, QColor(0xf0f0f0))
pal.setColor(QPalette.WindowText, QColor(0x404044))
elif theme == QChart.ChartThemeDark:
pal.setColor(QPalette.Window, QColor(0x121218))
pal.setColor(QPalette.WindowText, QColor(0xd6d6d6))
elif theme == QChart.ChartThemeBlueCerulean:
## 设置背景颜色和标题颜色
pal.setColor(QPalette.Window, QColor(0x40434a))
pal.setColor(QPalette.WindowText, QColor(0xd6d6d6))
elif theme == QChart.ChartThemeBrownSand:
pal.setColor(QPalette.Window, QColor(0x9e8965))
pal.setColor(QPalette.WindowText, QColor(0x404044))
self.window().setPalette(pal)
背景图片的透明化
必须把Pyqt5 中 QWidget控件中的放大,最小化,关闭,去除
self.setWindowFlags(Qt.FramelessWindowHint | Qt.Tool)
然后在进行窗口的背景透明化
self.setAttribute(Qt.WA_TranslucentBackground,True)
控件的透明化
目前按钮可以透明化
def changeOpacity(myshow): # myshow传入的控件名称
op = QtWidgets.QGraphicsOpacityEffect()
op.setOpacity(0.5)
myshow.setGraphicsEffect(op)
myshow.setAutoFillBackground(True)