Skip to content

Commit cae0d73

Browse files
committed
add p32 qt-material
1 parent 00cac33 commit cae0d73

File tree

4 files changed

+310
-3
lines changed

4 files changed

+310
-3
lines changed

README.md

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# PyQt5基础教程(持续更新中。。。)
22

3+
* p32_主题美化之`qt-material` [源码下载](p32_主题美化qtmaterial) [博文地址](https://xugaoxiang.com/2022/09/23/pyqt5-32-qt-material/)
4+
35
* p31_滑动条 [源码下载](p31_滑动条) [博文地址](https://xugaoxiang.com/2022/09/15/pyqt5-31-qslider/)
46

57
* p30_屏幕录制 [源码下载](p30_屏幕录制) [博文地址](https://xugaoxiang.com/2022/09/13/pyqt5-30-record/)
@@ -8,13 +10,13 @@
810

911
* p28_鼠标事件 [源码下载](p28_鼠标事件) [博文地址](https://xugaoxiang.com/2022/05/15/pyqt5-28-mouse-event/)
1012

11-
* p27_显示matplotlib图表 [源码下载](p27_显示matplotlib图表) [博文地址](https://xugaoxiang.com/2022/05/03/pyqt5-27-matplotlib/)
13+
* p27_显示`matplotlib`图表 [源码下载](p27_显示matplotlib图表) [博文地址](https://xugaoxiang.com/2022/05/03/pyqt5-27-matplotlib/)
1214

1315
* p26_设置背景图片 [源码下载](p26_设置背景图片) [博文地址](https://xugaoxiang.com/2022/04/26/pyqt5-26-stylesheet/)
1416

15-
* p25_图片自适应label控件大小 [源码下载](p25_图片自适应label控件大小) [博文地址](https://xugaoxiang.com/2022/04/10/pyqt5-25-image-scale/)
17+
* p25_图片自适应`label`控件大小 [源码下载](p25_图片自适应label控件大小) [博文地址](https://xugaoxiang.com/2022/04/10/pyqt5-25-image-scale/)
1618

17-
* p24_QMessageBox按钮自定义 [源码下载](p24_QMessageBox自定义按钮) [博文地址](https://xugaoxiang.com/2022/04/10/pyqt5-24-qmessagebox-button-customization/)
19+
* p24_`QMessageBox`按钮自定义 [源码下载](p24_QMessageBox自定义按钮) [博文地址](https://xugaoxiang.com/2022/04/10/pyqt5-24-qmessagebox-button-customization/)
1820

1921
* p23_自适应布局 [博文地址](https://xugaoxiang.com/2022/03/21/pyqt5-23-auto-fit-windows/)
2022

p32_主题美化qtmaterial/main.py

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import sys
2+
from qt_material import apply_stylesheet, list_themes
3+
4+
from PyQt5.QtWidgets import QMainWindow, QApplication
5+
6+
from ui import Ui_MainWindow
7+
8+
9+
class MainWindow(QMainWindow, Ui_MainWindow):
10+
11+
def __init__(self, parent=None):
12+
super(MainWindow, self).__init__(parent)
13+
self.setupUi(self)
14+
15+
self.pushButton_login.setProperty('class', 'danger')
16+
17+
if __name__ == '__main__':
18+
app = QApplication(sys.argv)
19+
20+
# 查看所有的主题
21+
print(list_themes())
22+
23+
extra = {
24+
25+
# 按钮颜色
26+
'danger': '#dc3545',
27+
'warning': '#ffc107',
28+
'success': '#17a2b8',
29+
30+
# 字体
31+
'font_family': 'Roboto',
32+
}
33+
34+
apply_stylesheet(app, theme='default_dark.xml', extra=extra)
35+
36+
windows = MainWindow()
37+
windows.show()
38+
sys.exit(app.exec_())

p32_主题美化qtmaterial/project.ui

+147
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ui version="4.0">
3+
<class>MainWindow</class>
4+
<widget class="QMainWindow" name="MainWindow">
5+
<property name="geometry">
6+
<rect>
7+
<x>0</x>
8+
<y>0</y>
9+
<width>684</width>
10+
<height>527</height>
11+
</rect>
12+
</property>
13+
<property name="windowTitle">
14+
<string>主题美化示例</string>
15+
</property>
16+
<widget class="QWidget" name="centralwidget">
17+
<layout class="QGridLayout" name="gridLayout">
18+
<item row="0" column="0">
19+
<layout class="QVBoxLayout" name="verticalLayout" stretch="2,1,1,2">
20+
<item>
21+
<widget class="QLabel" name="label_title">
22+
<property name="sizePolicy">
23+
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
24+
<horstretch>0</horstretch>
25+
<verstretch>0</verstretch>
26+
</sizepolicy>
27+
</property>
28+
<property name="font">
29+
<font>
30+
<pointsize>20</pointsize>
31+
</font>
32+
</property>
33+
<property name="text">
34+
<string>登录系统</string>
35+
</property>
36+
<property name="alignment">
37+
<set>Qt::AlignCenter</set>
38+
</property>
39+
</widget>
40+
</item>
41+
<item>
42+
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,2">
43+
<item>
44+
<widget class="QLabel" name="label_username">
45+
<property name="sizePolicy">
46+
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
47+
<horstretch>0</horstretch>
48+
<verstretch>0</verstretch>
49+
</sizepolicy>
50+
</property>
51+
<property name="font">
52+
<font>
53+
<pointsize>18</pointsize>
54+
</font>
55+
</property>
56+
<property name="layoutDirection">
57+
<enum>Qt::LeftToRight</enum>
58+
</property>
59+
<property name="text">
60+
<string>用户名</string>
61+
</property>
62+
</widget>
63+
</item>
64+
<item>
65+
<widget class="QLineEdit" name="lineEdit_username">
66+
<property name="sizePolicy">
67+
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
68+
<horstretch>0</horstretch>
69+
<verstretch>0</verstretch>
70+
</sizepolicy>
71+
</property>
72+
</widget>
73+
</item>
74+
</layout>
75+
</item>
76+
<item>
77+
<layout class="QHBoxLayout" name="horizontalLayout_2" stretch="1,2">
78+
<item>
79+
<widget class="QLabel" name="label_passwd">
80+
<property name="sizePolicy">
81+
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
82+
<horstretch>0</horstretch>
83+
<verstretch>0</verstretch>
84+
</sizepolicy>
85+
</property>
86+
<property name="font">
87+
<font>
88+
<pointsize>18</pointsize>
89+
</font>
90+
</property>
91+
<property name="text">
92+
<string>密 码</string>
93+
</property>
94+
</widget>
95+
</item>
96+
<item>
97+
<widget class="QLineEdit" name="lineEdit_passwd">
98+
<property name="sizePolicy">
99+
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
100+
<horstretch>0</horstretch>
101+
<verstretch>0</verstretch>
102+
</sizepolicy>
103+
</property>
104+
</widget>
105+
</item>
106+
</layout>
107+
</item>
108+
<item>
109+
<widget class="QPushButton" name="pushButton_login">
110+
<property name="sizePolicy">
111+
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
112+
<horstretch>0</horstretch>
113+
<verstretch>0</verstretch>
114+
</sizepolicy>
115+
</property>
116+
<property name="font">
117+
<font>
118+
<pointsize>18</pointsize>
119+
</font>
120+
</property>
121+
<property name="toolTipDuration">
122+
<number>-3</number>
123+
</property>
124+
<property name="text">
125+
<string>登 录</string>
126+
</property>
127+
</widget>
128+
</item>
129+
</layout>
130+
</item>
131+
</layout>
132+
</widget>
133+
<widget class="QMenuBar" name="menubar">
134+
<property name="geometry">
135+
<rect>
136+
<x>0</x>
137+
<y>0</y>
138+
<width>684</width>
139+
<height>23</height>
140+
</rect>
141+
</property>
142+
</widget>
143+
<widget class="QStatusBar" name="statusbar"/>
144+
</widget>
145+
<resources/>
146+
<connections/>
147+
</ui>

p32_主题美化qtmaterial/ui.py

+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
# -*- coding: utf-8 -*-
2+
3+
# Form implementation generated from reading ui file '.\project.ui'
4+
#
5+
# Created by: PyQt5 UI code generator 5.15.4
6+
#
7+
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
8+
# run again. Do not edit this file unless you know what you are doing.
9+
10+
11+
from PyQt5 import QtCore, QtGui, QtWidgets
12+
13+
14+
class Ui_MainWindow(object):
15+
def setupUi(self, MainWindow):
16+
MainWindow.setObjectName("MainWindow")
17+
MainWindow.resize(684, 527)
18+
self.centralwidget = QtWidgets.QWidget(MainWindow)
19+
self.centralwidget.setObjectName("centralwidget")
20+
self.gridLayout = QtWidgets.QGridLayout(self.centralwidget)
21+
self.gridLayout.setObjectName("gridLayout")
22+
self.verticalLayout = QtWidgets.QVBoxLayout()
23+
self.verticalLayout.setObjectName("verticalLayout")
24+
self.label_title = QtWidgets.QLabel(self.centralwidget)
25+
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
26+
sizePolicy.setHorizontalStretch(0)
27+
sizePolicy.setVerticalStretch(0)
28+
sizePolicy.setHeightForWidth(self.label_title.sizePolicy().hasHeightForWidth())
29+
self.label_title.setSizePolicy(sizePolicy)
30+
font = QtGui.QFont()
31+
font.setPointSize(20)
32+
self.label_title.setFont(font)
33+
self.label_title.setAlignment(QtCore.Qt.AlignCenter)
34+
self.label_title.setObjectName("label_title")
35+
self.verticalLayout.addWidget(self.label_title)
36+
self.horizontalLayout = QtWidgets.QHBoxLayout()
37+
self.horizontalLayout.setObjectName("horizontalLayout")
38+
self.label_username = QtWidgets.QLabel(self.centralwidget)
39+
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
40+
sizePolicy.setHorizontalStretch(0)
41+
sizePolicy.setVerticalStretch(0)
42+
sizePolicy.setHeightForWidth(self.label_username.sizePolicy().hasHeightForWidth())
43+
self.label_username.setSizePolicy(sizePolicy)
44+
font = QtGui.QFont()
45+
font.setPointSize(18)
46+
self.label_username.setFont(font)
47+
self.label_username.setLayoutDirection(QtCore.Qt.LeftToRight)
48+
self.label_username.setObjectName("label_username")
49+
self.horizontalLayout.addWidget(self.label_username)
50+
self.lineEdit_username = QtWidgets.QLineEdit(self.centralwidget)
51+
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
52+
sizePolicy.setHorizontalStretch(0)
53+
sizePolicy.setVerticalStretch(0)
54+
sizePolicy.setHeightForWidth(self.lineEdit_username.sizePolicy().hasHeightForWidth())
55+
self.lineEdit_username.setSizePolicy(sizePolicy)
56+
self.lineEdit_username.setObjectName("lineEdit_username")
57+
self.horizontalLayout.addWidget(self.lineEdit_username)
58+
self.horizontalLayout.setStretch(0, 1)
59+
self.horizontalLayout.setStretch(1, 2)
60+
self.verticalLayout.addLayout(self.horizontalLayout)
61+
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
62+
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
63+
self.label_passwd = QtWidgets.QLabel(self.centralwidget)
64+
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
65+
sizePolicy.setHorizontalStretch(0)
66+
sizePolicy.setVerticalStretch(0)
67+
sizePolicy.setHeightForWidth(self.label_passwd.sizePolicy().hasHeightForWidth())
68+
self.label_passwd.setSizePolicy(sizePolicy)
69+
font = QtGui.QFont()
70+
font.setPointSize(18)
71+
self.label_passwd.setFont(font)
72+
self.label_passwd.setObjectName("label_passwd")
73+
self.horizontalLayout_2.addWidget(self.label_passwd)
74+
self.lineEdit_passwd = QtWidgets.QLineEdit(self.centralwidget)
75+
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
76+
sizePolicy.setHorizontalStretch(0)
77+
sizePolicy.setVerticalStretch(0)
78+
sizePolicy.setHeightForWidth(self.lineEdit_passwd.sizePolicy().hasHeightForWidth())
79+
self.lineEdit_passwd.setSizePolicy(sizePolicy)
80+
self.lineEdit_passwd.setObjectName("lineEdit_passwd")
81+
self.horizontalLayout_2.addWidget(self.lineEdit_passwd)
82+
self.horizontalLayout_2.setStretch(0, 1)
83+
self.horizontalLayout_2.setStretch(1, 2)
84+
self.verticalLayout.addLayout(self.horizontalLayout_2)
85+
self.pushButton_login = QtWidgets.QPushButton(self.centralwidget)
86+
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
87+
sizePolicy.setHorizontalStretch(0)
88+
sizePolicy.setVerticalStretch(0)
89+
sizePolicy.setHeightForWidth(self.pushButton_login.sizePolicy().hasHeightForWidth())
90+
self.pushButton_login.setSizePolicy(sizePolicy)
91+
font = QtGui.QFont()
92+
font.setPointSize(18)
93+
self.pushButton_login.setFont(font)
94+
self.pushButton_login.setToolTipDuration(-3)
95+
self.pushButton_login.setObjectName("pushButton_login")
96+
self.verticalLayout.addWidget(self.pushButton_login)
97+
self.verticalLayout.setStretch(0, 2)
98+
self.verticalLayout.setStretch(1, 1)
99+
self.verticalLayout.setStretch(2, 1)
100+
self.verticalLayout.setStretch(3, 2)
101+
self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
102+
MainWindow.setCentralWidget(self.centralwidget)
103+
self.menubar = QtWidgets.QMenuBar(MainWindow)
104+
self.menubar.setGeometry(QtCore.QRect(0, 0, 684, 23))
105+
self.menubar.setObjectName("menubar")
106+
MainWindow.setMenuBar(self.menubar)
107+
self.statusbar = QtWidgets.QStatusBar(MainWindow)
108+
self.statusbar.setObjectName("statusbar")
109+
MainWindow.setStatusBar(self.statusbar)
110+
111+
self.retranslateUi(MainWindow)
112+
QtCore.QMetaObject.connectSlotsByName(MainWindow)
113+
114+
def retranslateUi(self, MainWindow):
115+
_translate = QtCore.QCoreApplication.translate
116+
MainWindow.setWindowTitle(_translate("MainWindow", "主题美化示例"))
117+
self.label_title.setText(_translate("MainWindow", "登录系统"))
118+
self.label_username.setText(_translate("MainWindow", "用户名"))
119+
self.label_passwd.setText(_translate("MainWindow", "密 码"))
120+
self.pushButton_login.setText(_translate("MainWindow", "登 录"))

0 commit comments

Comments
 (0)