当前位置: 首页 > news >正文

PyQt 界面编程:QDialog、QWidget、QMainWindow 的面向过程与面向对象编程

文章目录

  • 一、PyQt简介
  • 二、面向过程编程
  • 三、面向对象编程(推荐)
    • 3.1 QWidget窗口
    • 3.2 QMainWindow窗口
    • 3.3 QDialog窗口

文档: https://www.riverbankcomputing.com/static/Docs/PyQt5/

一、PyQt简介

PyQt简介:PyQt 是一个用于创建图形用户界面(GUI)的 Python 库,它将 Qt 应用程序框架与 Python 语言结合。Qt 是一个功能强大的跨平台 C++ 库,广泛用于开发桌面、移动和嵌入式应用程序。PyQt 允许开发者利用 Qt 的强大功能,同时使用 Python 的简洁语法.

窗口分类:PyQt中常用的三种窗口分别是QDialogQWidgetQMainWindow。它们分别用于不同的场景和需求。以下是它们的详细介绍与区别:

窗口类型 介绍 特点 应用场景
QWidget 是 PyQt 中所有用户界面对象的基类,它是其他窗口类(如 QDialog 和 QMainWindow)的父类。QWidget 可以作为一个独立的窗口,也可以作为其他窗口的子部件 轻量级:适合简单的窗口或自定义组件;
灵活性:可以作为主窗口、对话框或嵌入其他窗口;
无预设布局:需要手动设置布局和组件。
简单的自定义窗口。
作为其他窗口的子部件(如面板、控件容器)
QDialog 用于对话框的窗口类,通常用于弹出窗口,例如设置对话框、消息框等。QDialog 可以是模态(阻塞主窗口)或非模态(不阻塞主窗口) 对话框特性:适合短期的用户交互;
模态支持:可以设置为模态对话框(exec_())或非模态对话框(show());
预设按钮:支持 Ok、Cancel 等标准按钮。
弹出对话框(如设置、登录、消息提示)
需要用户输入或确认的临时窗口
QMainWindow(推荐) 是用于主应用程序窗口的类,通常用于复杂的应用程序界面。它提供了菜单栏、工具栏、状态栏和中心窗口区域等标准组件 主窗口特性:适合复杂的应用程序;
内置布局:支持菜单栏、工具栏、状态栏和中心部件;
可扩展性:可以添加多个子窗口或自定义组件
主应用程序窗口(如文本编辑器、IDE)
需要菜单栏、工具栏等标准组件的窗口。

编程方式:PyQt主要包括面向过程编程面向对象编程是两种常见的编程方式。它们各有特点,适用于不同的开发场景。以下是它们的详细介绍与应用场景:

方式 介绍 特点 场景
面向过程编程 是一种以过程(函数)为中心的编程方式,代码逻辑通过一系列函数调用来实现。在 PyQt 中,面向过程编程通常用于简单的应用程序或快速原型开发 代码简单直接:适合小型程序或快速实现功能;
逻辑集中在函数中:通过函数调用来完成界面创建和事件处理;
不易维护:随着程序规模增大,代码可能变得难以维护和扩展。
小型工具:功能简单、代码量少的应用程序;
快速原型:需要快速验证想法或功能的场景;
学习与实验:初学者学习 PyQt 的基本用法
面向对象编程(推荐) 是一种以对象为中心的编程方式,通过类和对象来组织代码。在 PyQt 中,面向对象编程是推荐的方式,适合中大型应用程序开发 代码结构清晰:通过类和对象组织代码,易于维护和扩展;
封装性:将界面和逻辑封装在类中,提高代码复用性;
适合复杂应用:适合需要模块化和可扩展性的应用程序
中大型应用程序:功能复杂、需要模块化设计的项目;
可扩展性要求高:需要频繁添加新功能或修改现有功能;
团队协作:代码结构清晰,便于多人协作开发

推荐:PyQt编程中,推荐使用QMainWindow窗口类型,采用面向对象编程方式,利用UI与逻辑分离形式(即UI与逻辑做两个类或文件分开保存)

二、面向过程编程

QWidget

from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QVBoxLayout
import sys

# 按钮事件
def click_btn():
    print("点击了按钮")

app = QApplication(sys.argv)
# 创建QWidget窗口及初始化
window = QWidget()
window.setWindowTitle('标题')
window.resize(400, 400)
# 创建布局及加入界面
layout = QVBoxLayout()
window.setLayout(layout)
# 创建控件及加入布局中
btn = QPushButton("按钮")
btn.clicked.connect(click_btn)   # 按钮绑定函数
layout.addWidget(btn)
# 界面展示
window.show()
sys.exit(app.exec_())

QMainWindow:QMainWindow窗口没有布局管理器,通常需要借助QWidget窗口作为其中心部件(或QDialog,推荐QWidget)

from PyQt5.QtWidgets import QWidget, QMainWindow, QApplication, QPushButton, QVBoxLayout
import sys

# 按钮事件
def click_btn():
    print("点击了按钮")

app = QApplication(sys.argv)
# 创建QMainWindow窗口及初始化
window = 

相关文章:

  • 在Vue项目中使用three.js在前端页面展示PLY文件或STL文件
  • Python爬虫TLS
  • 玩转SpringCloud Stream
  • 【从0做项目】Java搜索引擎(7) web模块
  • 在做题中学习(90):螺旋矩阵II
  • ArcEngine开发中,当点击窗体中的ButtoncClick时,程序需等待五六秒才反应过来,的解决方案。
  • 深入理解 SQL 事务隔离级别:脏读、不可重复读和幻读
  • 技术速递|Copilot Edits(预览版)介绍
  • 春风席卷法(单词分泌物):一天记20个忘10个任务之3
  • Deepseek搭建本地知识库
  • sql注入漏洞
  • 已解决IDEA无法输入中文问题(亲测有效)
  • Educational Codeforces Round 174 (Rated for Div. 2)(ABCD)
  • 容器网络(三)- calico网络IPIP模式
  • 深浅拷贝区别,怎么区别使用
  • 最新扣子(Coze)案例教程:全自动DeepSeek 写影评+批量生成 + 发布飞书,提效10 倍!手把手教学,完全免费教程
  • Open WebUI项目源码学习记录(从0开始基于纯CPU环境部署一个网页Chat服务)
  • 解决 ssh connect to host github.com port 22 Connection timed out
  • 重看Spring聚焦BeanDefinition分析和构造
  • LED灯闪烁实验:Simulink应用层开发
  • 山西网站建设情况汇总/网站流量统计
  • 有没有卖设计的网站/中国国际新闻
  • 订阅号登陆平台/自助优化排名工具
  • 网站建设公司优势/营销到底是干嘛的
  • 做网站外国的/推广产品的方法
  • 政府网站栏目/网络营销专业如何