Qt,Pyside6学习资料,够全够细致,欢迎学习交流
0 学习资料
Python Qt 图形界面编程 - PySide2 PyQt5 PyQt PySide_哔哩哔哩_bilibili
基于QT的开发流程
QT的学习思路
1 以一个例子开始
1.1 UI界面代码
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit,QMessageBox
def handleCalc():
info = textEdit.toPlainText()
print(info)
print(type(info))
# 薪资20000 以上 和 以下 的人员名单
salary_above_20k = ''
salary_below_20k = ''
for line in info.splitlines():
if not line.strip():
continue
parts = line.split(' ')
# 去掉列表中的空字符串内容
parts = [p for p in parts if p]
name,salary,age = parts
if int(salary) >= 20000:
salary_above_20k += name + '\n'
else:
salary_below_20k += name + '\n'
QMessageBox.about(window,
'统计结果',
f'''薪资20000 以上的有:\n{salary_above_20k}
\n薪资20000 以下的有:\n{salary_below_20k}'''
)
app = QApplication([])
window = QMainWindow()
window.resize(500, 400)
window.move(300, 300)
window.setWindowTitle('薪资统计')
textEdit = QPlainTextEdit(window)
textEdit.setPlaceholderText("请输入薪资表")
textEdit.move(10,25)
textEdit.resize(300,350)
button = QPushButton('统计', window)
button.move(380,80)
button.clicked.connect(handleCalc)
window.show()
app.exec_()
(1)app = QApplication([])
QApplication
提供了整个图形界面程序的底层管理功能,比如:初始化、程序入口参数的处理,用户事件(对界面的点击、输入、拖拽)分发给各个对应的控件,等等…
小结:既然QApplication要做如此重要的初始化操作,所以,我们必须在任何界面控件对象创建前,先创建它。
实例对象=类+(初始化参数)实例化操作
(2)控件的使用
window = QMainWindow()
实例化出来一个主窗口界面
window.resize(500, 400)
修改window的大小
window.move(300, 310)
运行时候窗口的初始位置,有父组件的话(300,310)位置是相较于父控件的,没有父控件的话相对于显示器
window.setWindowTitle('薪资统计')
设置window主窗口的标题
textEdit = QPlainTextEdit(window)
实例化一个文本编辑控件,其是window主窗口父控件下的一个子控件
textEdit.setPlaceholderText("请输入薪资表")
修改此文本编辑控件实例对象的标题
button = QPushButton('统计', window)
实例化一个button按钮控件对象,其是其是window主窗口父控件下的一个子控件
若是把window
改成textEdit
会怎么样?
**小结:**对于控件的使用
大体思路是 实例化一个控件对象出来,明确控件之间的父子关系,修改控件对象的相关属性
(3).show()
方法,展示窗口
实例化对象.show()
将此控件(包含此控件下的子控件),一般为主窗口或窗口
(4).exec_( )
方法
一定要有,并且此对象是QMainWindow()
类中实例化出来的对象
1.2 界面动作处理 (signal 和 slot)
刚才代码中只有UI并没有实际功能
怎么实现我想要的功能呢?
怎么实现我触发UI界面的控件就对应我想执行的操作呢?即信号和操作关联?
实现我想要的功能
def handleCalc():
print('统计按钮被点击了')
def handleCalc():
info = textEdit.toPlainText()
# 薪资20000 以上 和 以下 的人员名单
salary_above_20k = ''
salary_below_20k = ''
for line in info.splitlines():
if not line.strip():
continue
parts = line.split(' ')
# 去掉列表中的空字符串内容
parts = [p for p in parts if p]
name,salary,age = parts
if int(salary) >= 20000:
salary_above_20k += name + '\n'
else:
salary_below_20k += name + '\n'
QMessageBox.about(window,
'统计结果',
f'''薪资20000 以上的有:\n{salary_above_20k}
\n薪资20000 以下的有:\n{salary_below_20k}'''
)
信号和操作关联
button.clicked.connect(handleCalc)
1.3 常见的需求
(1) 我们想用一些操作例如鼠标点击某个按钮,键盘输入某个指令,从而触发相应的操作。
例如我想通过点击统计,然后执行我们代码中的其他功能函数。我们需要做两部,第一将二者关联起来,第二点击统计后发出一个信号能通知电脑,我要你执行那一段代码
所以也需要将UI界面和相应的功能函数分隔开。
(2)我们想获取用户的一些内容,怎么才能获取呢?
(3)我们想将程序的某些运行结果,在UI上展示,该怎么展示呢?
具体点的需求
(1)如何将点击button的信号和操作关联起来呢?
button.clicked.connect(arg)
arg
参数填写需要执行的功能参数
(2)如何获取用户输入的文本信息
textEdit.toPlainText()
返回一个字符串类型来存储用户输入的文本信息
(3)如何将操作的运行结果展示在UI上,展示在一个窗口的某一部分,展示在一个新的窗口
展示的内容:文本内容,图片,视频,语音?
展示的位置:?
总结:给一个软件搭建UI的整理思路
0、分析需求
1、绘制出UI界面
2、实现想要进行的操作
3、将UI界面的控件和操作关联起来
1.4 将一个界面封装到一个类中
上面的代码把控件对应的变量名全部作为全局变量。
如果要设计稍微复杂一些的程序,就会出现太多的控件对应的变量名。
而且这样也不利于 代码的模块化。
所以,我们通常应该把 一个窗口和其包含的控件,对应的代码 全部封装到类中,如下所示
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QPlainTextEdit,QMessageBox
class Stats:
# 初始化方法
def __init__(self):
self.window = QMainWindow()
self.window.resize(500, 400)
self.window.move(300, 300)
self.window.setWindowTitle('薪资统计')
self.textEdit = QPlainTextEdit(self.window)
self.textEdit.setPlaceholderText("请输入薪资表")
self.textEdit.move(10, 25)
self.textEdit.resize(300, 350)
self.button = QPushButton('统计', self.window)
self.button.move(380, 80)
self.button.clicked.connect(self.handleCalc)
# 操作函数
def handleCalc(self):
info = self.textEdit.toPlainText()
# 薪资20000 以上 和 以下 的人员名单
salary_above_20k = ''
salary_below_20k = ''
for line in info.splitlines():
if not line.strip():
continue
parts = line.split(' ')
# 去掉列表中的空字符串内容
parts = [p for p in parts if p]
name,salary,age = parts
if int(salary) >= 20000:
salary_above_20k += name + '\n'
else:
salary_below_20k += name + '\n'
QMessageBox.about(self.window,
'统计结果',
f'''薪资20000 以上的有:\n{salary_above_20k}
\n薪资20000 以下的有:\n{salary_below_20k}'''
)
app = QApplication([])
stats = Stats()
stats.window.show()
app.exec_()
一个界面一个类,封装到类中很有必要
2 界面设计和布局QT designer
2.1 如何找到QT designer.exe文件
2.2 控件栏
2.3 应用QT desinger初步设计UI
1、如何给widget设置背景
QT设置widget背景图片,不影响widget内其他控件背景的方法_qt添加背景图片不覆盖其他控件,放在后面-CSDN博客
类名 # 控件名
{
填充方式:图片路径
}
例如:
QWidget#Widget
{
border-image: url(:/resource/bg2.png);
}
或者
QFrmae#frame
{
border-image: url(:/resource/bg2.png);
}
2、如何更改添加控件的实例化对象名
3、如何更改添加控件的属性
3 动态加载UI文件
问题1:我用QTdesinger设计好了.ui文件我该如何转换到python呢?
**方法一:**通过脚本或者自带的指令将设计好的.ui文件转化为.py文件
转换指令:
pyside6-uic main.ui > ui_main.py
pyside6-uic main.ui > ui_main.py
pyuic5 main.ui > ui_main.py
pyside6-uic blood_3.ui > blood_3.py
应用实例:
from PySide2.QtWidgets import QApplication,QMainWindow
from ui_main import Ui_MainWindow
# 注意 这里选择的父类 要和你UI文件窗体一样的类型
# 主窗口是 QMainWindow, 表单是 QWidget, 对话框是 QDialog
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 使用ui文件导入定义界面类
self.ui = Ui_MainWindow()
# 初始化界面
self.ui.setupUi(self)
# 使用界面定义的控件,也是从ui里面访问
self.ui.webview.load('http://www.baidu.com')
app = QApplication([])
mainw = MainWindow()
mainw.show()
app.exec_()
**方法二:**通过QUiLoader().load(.ui文件)
方法加载一个ui文件到.py中
注意:
注意:里面的控件对象也成为窗口对象的属性了
# 比如 self.ui.button , self.ui.textEdit
#不再是
# setting_button = QPushButton('name', window)
# setting_button.clicked.connected(function)
具体代码
from PySide2.QtUiTools import QUiLoader
class mainwindow:
def __init__(self):
# 从文件中加载UI定义
# 从 UI 定义中动态 创建一个相应的窗口对象
# 注意:里面的控件对象也成为窗口对象的属性了
# 比如 self.ui.button , self.ui.textEdit
self.ui = QUiLoader().load('main.ui')
self.ui.(button实例化对象名).clicked.connect(self.handleFunction)
def handleFunction(self):
print("helloworld")
示例代码
from PySide2.QtWidgets import QApplication, QMessageBox
# TO DO
from PySide2.QtUiTools import QUiLoader
class Stats:
def __init__(self):
# 从文件中加载UI定义
# 从 UI 定义中动态 创建一个相应的窗口对象
# 注意:里面的控件对象也成为窗口对象的属性了
# 比如 self.ui.button , self.ui.textEdit
# TO DO
self.ui = QUiLoader().load('main.ui')
self.ui.button.clicked.connect(self.handleCalc)
def handleCalc(self):
info = self.ui.textEdit.toPlainText()
salary_above_20k = ''
salary_below_20k = ''
for line in info.splitlines():
if not line.strip():
continue
parts = line.split(' ')
parts = [p for p in parts if p]
name,salary,age = parts
if int(salary) >= 20000:
salary_above_20k += name + '\n'
else:
salary_below_20k += name + '\n'
QMessageBox.about(self.ui,
'统计结果',
f'''薪资20000 以上的有:\n{salary_above_20k}
\n薪资20000 以下的有:\n{salary_below_20k}'''
)
app = QApplication([])
stats = Stats()
stats.ui.show()
app.exec_()
问题2:在开发过程中,可能会不断的调整ui布局的话,需要动态加载ui文件
则推荐使用方法二
4 界面布局layout
目的:随着主窗口的缩放,界面里面的控件,控件之间的距离也相应的进行缩放
最好的步骤:先用layout布局好后,在进行控件的添加
但是也可以:添加好控件后,也可以再用layout进行布局
思路:分模块的想这一组控件该是什么控件
步骤:右键鼠标,方框选中,然后点击布局,选择想要的布局,调整大小
其中输入框会自动扩展,下拉选择按钮,按钮都不会自动扩展
如何多选控件,按住crtl + 右键
QTdesinger中
Vertical layout 垂直布局 控件按行排放
horizontal layout 水平布局 控件按列排放
Grid layout 表格布局
Form layout 列表布局
5 调整控件的大小
1、在没有layout布局下调整控件的大小
修改控件的geometry(几何学)属性
geometry属性
X 控件x轴初始位置 相较于其父窗口位置
Y 控件y轴初始位置 相较于其父窗口位置
width 初始设置的宽度
height 初始设置的高度
2、在layout布局下调整控件的大小
Q1:当将一个控件进行layout布局后就无法修改geometry属性?如何调整layout布局下控件的大小?
ans1:修改控件的sizePolicy属性和minimumSize,maximumSize属性
建议将minimumSize和geometry中宽度和高度设置相同
以保证在layout布局后,设置好控件的大小保持为layout布局前的宽度和高度
sizePolicy属性
sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值)
Preferred:默认值,控件的sizeHint是它的sizeHint,但是可以放大或者缩小
Ignored:
Expending:控件可以自行增大或者缩小
Fixed:控件不能放大或者缩小,控件的大小(geometry属性中的大小)就是它的sizeHint。
Minimum:控件的sizeHint(minimumSize属性)为控件的最小尺寸。控件不能小于这个sizeHint,但是可以放大。
Maximum:控件的sizeHint为控件(maximumSize属性)的最大尺寸,控件不能放大,但是可以缩小到它的最小的允许尺寸。
minimumSize属性
width
height
maximumSize属性
width
height
Q2:如果说一个layout布局中有若干个控件,有些控件想占用的大一些,有些控件我只想让它小一点该如何做?
ans2 :调整layout布局中layoutStetch属性
layoutStretch属性
调整一个布局下的空间的比例大小,缩放比例
3、总结
设定控件大小最简单高效的方法
设置好geometry属性中的宽高,然后设置好minimumSize中的宽高和maximumSize中的宽高(可选)然后根据具体效果,调整SizePolicy和layoutStretch
最根本的方法
合理运用Qwidget中的geometry、sizePolicy、minimumSize、maximumSize和layout布局中的layoutStetch属性
4、实战练习
设置好两个label,一个用于展示原图像,一个用于展示处理检测后的图像,合理设置两个label的大小。
6 调整控件的位置
本节问题
在使用layout实现自动缩放后,有些控件的位置和大小不符合预期效果
如何调整layout中控件的大小比例?
优先使用layout的layoutStrentch属性来控制,来控制每个控件的大小比例
如何在layout布局下调整某个控件的大小?
决定控件缩放的属性:sizePolicy,可以调整大小的策略
调整某控件sizePolicy属性,需要父窗口有布局的情况下
如何让一个button实现能够自动缩放,所以调节sizePolicy属性为ignored
如何layout布局下某控件的位置呢?只有一个控件如何布局layout?
托进入一个layout,然后将所需要的控件,拖入有段对象查看器中的布局
如何在layout布局下调整控件的间距呢?
要调整控件上下间距,可以给控件添加layout,然后通过设定layout的上下的padding 和 margin 来调整间距
要调整控件的左右间距,可以通过添加 horizontal spacer 进行控制,也可以通过layout的左右margin
如果想让一个layout布局下的几个控件之间保持一定的间距使用
vertical spcer,horizontal spcer
7 关于layout的布局经验
8 设计好ui文件后如何在python中运行
方法一:转化好的py文件作为模块调用
使用指令将ui文件转化为py文件,然后将转化好的py文件作为模块调用
第一步:转化
转化指令
# pyside6指令
pyside6-uic main.ui > ui_main.py
# pyside2指令
pyside2-uic main.ui > ui_main.py
# pyqt5指令
pyuic5 main.ui > ui_main.py
pyside6-uic blood_4 > blood_4.py
注意事项
1、需要在anconda有peside2/6,pyqt5环境下
2、需要切换到设计的ui盘符下
第二步:调用
示例代码
from PySide2.QtWidgets import QApplication,QMainWindow
from ui_main import Ui_MainWindow
# 注意 这里选择的父类 要和你UI文件窗体一样的类型
# 主窗口是 QMainWindow, 表单是 QWidget, 对话框是 QDialog
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# 使用ui文件导入定义界面类
self.ui = Ui_MainWindow()
# 初始化界面
self.ui.setupUi(self)
# 使用界面定义的控件,也是从ui里面访问
self.ui.webview.load('http://www.baidu.com')
app = QApplication([])
mainw = MainWindow()
mainw.show()
app.exec_()
注意
1、注意 这里选择的父类 要和你UI文件窗体一样的类型主窗口是 QMainWindow, 表单是 QWidget, 对话框是 QDialog
2、某个空间的调用
第三步:将qrc文件也转化为ui文件
若设计的ui中使用了qrc资源文件
转化指令
# pyside6将qrc文件转化为ui文件指令
pyside6-rcc resources.qrc -o resources_rc.py
# pyside2将qrc文件转化为ui文件指令
pyside2-rcc resources.qrc -o resources_rc.py
# pyqt5将qrc文件转化为ui文件指令
pyrcc5 resource.qrc -o resource_rc.py
注意事项
1、一定要把qrc文件转化为py文件否则会报错
ModuleNotFoundError: No module named 'resources_rc'
[PyQt5资源文件错误_modulenotfounderror: no module named 'resource-CSDN博客](https://blog.csdn.net/qq_39828850/article/details/115770888?ops_request_misc=&request_id=&biz_id=102&utm_term=为什么将ui文件转化为py文件后import resourc&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-2-115770888.142v99pc_search_result_base3&spm=1018.2226.3001.4187)
2、一定要确保在qrc所在盘符且拼写正确否则会报错
D:\Users\Administrator\anaconda3\envs\yolov8s\Lib\site-packages\PySide6\rcc: File does not exist 'resource.qrc' 'D:\Users\Administrator\anaconda3\envs\yolov8s\Lib\site-packages\PySide6\rcc -g python resource.qrc -o resource_rc.py' returned 1
这个错误提示表明指定的文件 resource.qrc 不存在。请确保在运行 pyside6-rcc
命令之前,你已经切换到包含 resource.qrc 文件的正确目录。另外,也确保文件名的拼写是正确的。检查一下文件路径和文件名,然后再试一次。
方法二:用Qloder类加载ui文件
示例代码
# 使用QUiLoder类来加载一个UI文件
from PySide6.QtWidgets import QApplication, QMessageBox
# TODO
from PySide6.QtUiTools import QUiLoader
from PySide6.QtCore import QFile
from PySide6.QtWidgets import QWidget
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 加载UI文件
ui_file = QFile("blood_3.ui")
ui_file.open(QFile.ReadOnly)
self.ui = loader.load(ui_file, self)
ui_file.close()
if __name__ == '__main__':
loader = QUiLoader()
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
注意事项
1、运行后不报错也没有反应?
参考:PySide6 QUiLoader 不显示窗口_pyside6使用quiloader-CSDN博客
一定要在实例化QApplication([])类之前QUiLoader()
即先后顺序QUiLoader()再QApplication([])类
2、用QUiLoder类加载ui不显示qrc文件中的图标?
3、注意调用控件形式
从文件中加载UI定义
# 从 UI 定义中动态 创建一个相应的窗口对象
# 注意:里面的控件对象也成为窗口对象的属性了
# 比如 self.ui.button , self.ui.textEdit
9 Qt 资源系统和qrc文件使用
pyside6(1):Qt 资源系统和qrc文件使用_qt qrc-CSDN博客
PySide入门实战之四 | 手把手教你qrc资源文件的使用_pyside6图片如何转换成qrc-CSDN博客
10 QSS样式表使用
1、QSS概述
(1)QSS全称
Qt style sheet
(2)QSS语法组成
是由 selector 和 declaration 组成 选择和描述
例如:
QPushButton {
color: red ;
font-size:15px;
}
花括号前面的 部分,比如示例中的 QPushButton
称之为 selector。
花括号后面的 部分,比如示例中的
{
color: red ;
font-size:15px;
}
称之为 Properties (样式属性)
2、selector选择器
(1)slector 常见语法
(2)Pseudo-States 伪状态
只有满足一定条件时候,触发某些操作的时候,才会显示样式表的属性
我们可以这样指定当鼠标移动到一个元素上方的时候,元素的显示样式
QPushButton:hover { color: red }
再比如,指定一个元素是disable状态的显示样式
QPushButton:disabled { color: red }
再比如,指定一个元素是鼠标悬浮,并且处于勾选(checked)状态的显示样式
QCheckBox:hover:checked { color: white }
(3) 优先级
近邻原则;如果一个元素的显示样式被多层指定了, 越靠近元素本身
的选择指定,优先级越高
例如 我在mainWindow父类中修改样式表
QPushButton {
color: red ;
font-size:15px;
}
但是我又选择了Button1 修改样式表
color:blue;
font-size:16px
则最终Button1的样式为最近的
3、样式属性
QSS样式官方文档
Qt Style Sheets Reference | Qt Widgets 5.15.16
# 背景
background-image:;
background-repeat:;
background-position:;
background-color:;
# 边框
border:线宽,样式,颜色;
border:1px solid #1d649c;
border:None;
# 样式有
solid 实线
dashed 虚线
dotted 点
# 字体
font: 700 28pt "Microsoft YaHei UI";
# 宽度和高度
QPushButton{
width:50px;
height:20px;
}
# magin、padding
QTextEdit {
margin:10px 11px 12px 13px
}
分别指定了元素的上右下左margin。
也可以使用 margin-top, margin-right, margin-bottom, margin-left 单独指定 元素的上右下左margin
4、如何在Qt desinger中的使用样式表
方式一:右键选择想要改变样式的某个控件,点击添加样式表,然后直接添加属性就行
优点:简单明了
缺点:繁琐
background-image:;
background-repeat:;
background-position:;
background-color:;
border:;
font: 700 28pt "Microsoft YaHei UI";
方法二:若某些控件的样式基本一致不想一个个修改?
那就服从语法语法规范,使用selector
需要注意的是,选择某父类添加样式表,如果不选择具体的实例对象,只选择某一类的样式,则该父类中存在的所有子类控件都会修改样式
例如 选择mainWindow窗口修改style sheet
QPushButton {
color: red ;
font-size:15px;
}
则会将mainWindow窗口下所有QPushButton控件均修改为一个样式
若只想改变其中之一的QPushButton控件控件需要添加这个对象的实例名
QPushButton #button1 {
color: red ;
font-size:15px;
}
5、常用的样式表QSS
(1)修改一个button控件的样式(指定图标,背景透明,无重复,无边框)
background-image: url(:/leftbox/images/newsize/menu.png);
background-repeat: no-repeat;
background-position: center;
background-color: transparent;
border: none;
(2)为主界面mainWindow,mainWidget添加一个好看的背景
# 添加背景图片
background-image: url(:/leftbox/images/newsize/background.png);
# 背景是否重复
background-repeat: no-repeat;
# 背景的位置
background-position: center;
# 背景的颜色
background-color: transparent;
(3)用一个label展示一个图标
background-image: url(:/setting /images/newsize/IOU.png);
background-repeat: no-repeat;
background-position: center;
(4)为一个label设一个好看的字体
可以直接在qtdesinger中改变样式表,添加字体
字体的样式可以在https://fontmeme.com/zh/shibie/中选择好看的字体
font: 700 28pt "Microsoft YaHei UI";
(5)实战案例
11 发布程序
使用pyinstaller,将py文件打包为可执行文件.exe
0 、参考资源
1、使用
在使用pyinstaller进行打包时候,只需要将主程序进行pyinstaller,主程序import的其他模块(功能函数模块)会自动进行打包
打包好后会生成两个文件夹
dist文件夹:
build文件夹:
打包好后只需要将dist文件夹下,你的项目文件压缩,然后发送给别人就行啦
2、注意
但是不能将某些动态调用的资源打包进入,比如:图片,excel,ui,qrc,qss文件,但是凡是import 导入的py文件都是可以自动打包进入的
什么叫做动态导入?动态资源呢?
就是在写代码的时候并不知道要导入,不是用 import语句,而是用 __import__
或者 exec
、 eval
这样的方式,来导入库。而是在运行的时候才知道的
——所以推荐优先使用将ui文件转化为py文件的方式加载ui界面
优势:
因为已经对于ui文件,qrc文件,qss文件进行转化为py文件,作为子模块进行调用所以无需要单独进行 添加资源文件的步骤
——若是采用QUiLoder类动态加载ui还需要将我们的示例代码 需要 从 httpclient.ui 中加载界面,手动拷贝到 dist/httpclient
目录中。然后,再双击运行 httpclient.exe
所以在执行前还需要将一些其他动态资源复制到dist文件中
3、常用的指令
pyinstaller httpclient.py --noconsole --hidden-import PySide2.QtXml
这样就会在当前目录下产生一个名为 dist
的目录。里面就有一个名为 httpclient 的目录,我们的可执行程序 httpclient.exe 就在里面。
--noconsole
指定不要命令行窗口,否则我们的程序运行的时候,还会多一个黑窗口。
在打包时,可能会出现一些错误如何查看呢?
但是我建议大家可以先去掉这个参数,等确定运行成功后,再加上参数重新制作exe。因为这个黑窗口可以显示出程序的报错,这样我们容易找到问题的线索。
--hidden-import PySide2.QtXml
参数是因为这个 QtXml库是动态导入,PyInstaller没法分析出来,需要我们告诉它,
4、如何隐藏py文件?
(1)转化为pyc文件
(2)转化为c语言,甚至汇编语言
5、 程序图标
(1)主窗口图标
from PySide2.QtGui import QIcon
app = QApplication([])
# 加载 icon
app.setWindowIcon(QIcon('logo.png'))
**注意:**这些图标png文件,在使用PyInstaller创建可执行程序时,也要拷贝到程序所在目录。否则可执行程序运行后不会显示图标。
(2)应用程序图标可执行文件图标
可以在PyInstaller创建可执行程序时,通过参数 --icon="logo.ico"
指定
比如
pyinstaller httpclient.py --noconsole --hidden-import PySide2.QtXml --icon="logo.ico"
**注意:**参数需要时ico文件,不能是png,jpg格式
将将png转化为ico文件网址:PNG to ICO - Convert your PNG to ICO for Free Online (zamzar.com)
12 常用控件的学习
0、参考资源
# 问题
1、qrc文件
什么是qr文件,其有何作用,如何生成qrc文件,如何加载使用qrc文件,如何将qrc文件转化为py文件
2、qss文件
什么是qss文件,如何编写qss,增强qss编程体验的插件,如何加载使用qss文件
3、ui文件
什么是UI文件,如何在py文件中加载ui文件,动态显示ui文件时编写的注意事项,如何将ui文件转化为py文件
4、深入理解布局
5、如何将别人创建的qt 模板二次进行开发?
color: rgba(0, 0, 0, 0.44);
text-align:center;
font: 700 italic 16pt “Segoe UI”;
字体网站:字体识别 (fontmeme.com)
调整图片尺寸:在线调整图片尺寸 (fontmeme.com)
将png转化为ico文件网址:PNG to ICO - Convert your PNG to ICO for Free Online (zamzar.com)
–hidden-import PySide2.QtXml --icon=“logo.ico”
**注意:**参数需要时ico文件,不能是png,jpg格式
将将png转化为ico文件网址:[PNG to ICO - Convert your PNG to ICO for Free Online (zamzar.com)](https://www.zamzar.com/convert/png-to-ico/)
# 12 常用控件的学习
## 0、参考资源
[前言_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1Zf4y1W79o/?p=1&vd_source=932cdfd8fd1977c3d2e37fc2ea706b1f)
[常用控件1 - 白月黑羽 (byhy.net)](https://www.byhy.net/py/qt/qt_05_1/)
# # 问题
1、qrc文件
什么是qr文件,其有何作用,如何生成qrc文件,如何加载使用qrc文件,如**何将qrc文件转化为py文件**
2、qss文件
什么是qss文件,如何编写qss,增强qss编程体验的插件,如何加载使用qss文件
3、ui文件
什么是UI文件,如何在py文件中加载ui文件,动态显示ui文件时编写的注意事项,如何将ui文件转化为py文件
4、深入理解布局
5、如何将别人创建的qt 模板二次进行开发?
color: rgba(0, 0, 0, 0.44);
text-align:center;
font: 700 italic 16pt "Segoe UI";
调色版:[调色板 | 微调和查看颜色代码 - Tophix](https://tophix.com/zh-cn/color/color-palette)
字体网站:[字体识别 (fontmeme.com)](https://fontmeme.com/zh/shibie/)
调整图片尺寸:[在线调整图片尺寸 (fontmeme.com)](https://fontmeme.com/zh/resize-images/)
将png转化为ico文件网址:[PNG to ICO - Convert your PNG to ICO for Free Online (zamzar.com)](https://www.zamzar.com/convert/png-to-ico/)