【Python】【Day2】图像管理系统笔记_图形交互界面_PyQt5【1】
记录了PyQt程序的 基本结构 和 对象 的相关内容。对控件进行操作后进入消息循环(保持交互窗口开启并监听用户操作)一般会将消息循环的返回码作为系统退出码传递:当控件没有父控件时,将为顶层控件(窗口),有最大化、最小化、关闭按钮,且可以设置标题图标。创建一个窗体小部件创建按钮创建标签通过继承控件父类初始化包装子控件设置控件文本内容QSS字符串
·
-
PyQt 程序的结构:
- 导入需要的包和模块;
- 创建应用程序对象;
- 控件操作;
- 消息监听;
-
程序解释
- sys.argv:类似于 C 语言中的 main 命令行传参,通过命令行启动的时候可以通过这个参数传参实现不同功能
- .arguments()可以获取传入的参数
app = QApplication(sys.argv) print(app.arguments()) - 在 QApplication() 中初始化了全局的 qApp 全局变量对象,可以使用这个对象而不使用其他对象来获取 .arguments()
print(qApp.arguments())
- 对控件进行操作后进入消息循环(保持交互窗口开启并监听用户操作)
app.exec_()
一般会将消息循环的返回码作为系统退出码传递:
sys.exit(app.exec_())
-
控件操作
创建控件
当控件没有父控件时,将为顶层控件(窗口),有最大化、最小化、关闭按钮,且可以设置标题图标。
创建一个窗体小部件
window = QWidget()
创建按钮
window = QPushButton()
创建标签
window = QLabel()
通过继承控件父类初始化包装子控件
class Window(QWidget):
def __init__(self):
super.__init__() # 执行父类初始化
# 以下是自定义控件的封装
self.setWindowTitle("")
self.resize(500, 500)
self.setup_ui() # 开始界面的ui
def setup_ui(self):
设置控件
设置控件文本内容
window.setText("lalalala")
展示控件
window.show()
技巧
子类查看
print(QWidget.__subclasses__())
QSS字符串样式设置
作用:对样式进行统一的设置
一般放在一个文件里,读取文件中的全部内容并内容放到样式表里。
label = QLabel()
label.setText("文本")
label.setStyleSheet("font-size: 20px;color: red")
通过给对象设置名称,使之成为为一个 id 选择器,对不同的选择器使用不同的 qss 样式。
在 .qss 文件中设置好一些样式,此处通过 id:"notice" 进行选择:
QLabel#notice{
font-size: 20px;
color: red;
}
读取 qss 样式设置:
with open("QObject.qss", 'r') as f:
qApp.setStyleSheet(f.read())
为对象设置对象名作为 id 选择器:
label = QLabel(self)
label.setObjectName("notice")
label.setText("文本")
id 选择还可以划分等级:
QLabel#notice[noticelevel="normal"]{
font-size: 20px;
color: green;
border-color: green;
}
对应为要设置的对象设置等级:
label = QLabel(self)
label.setObjectName("notice")
label.setProperty("noticelevel", "normal")
label.setText("文本")
对象操作
你有没有对象呢?
设置父对象
父对象只有一个,按最后设置的为准。
obj0 = QObject()
obj1 = QObject()
obj0.setParent(obj1)
获取父对象
obj0.parent()
获取子对象
obj1.children()
寻找子对象
通过各种规则限定查找指定对象
第三个参数:
- 递归查找:
Qt.FindChildrenRecursively
- 只查找直接子对象:
Qt.FindDirectChildrenOnly
obj1.findChild(类型或类型元组, "对象名", 默认是递归查找,可以只查找直接子对象)
寻找一堆子对象
obj1.findChildren(类型或类型元组, "对象名", 默认是递归查找,可以只查找直接子对象)
对象的内存管理
销毁父对象时子对象被同时销毁
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)