低代码软件搭建自学的第一天——熟悉PyQt

news2024/12/21 5:49:00

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 学习计划
  • 第 1 步:环境搭建
    • 1.1 安装 Python
    • 1.2 安装 PyQt
      • 安装命令:
      • 验证安装:
  • 第 2 步:PyQt 基础知识
    • 2.1 创建第一个窗口
      • 代码示例:简单窗口
      • 运行结果:
    • 2.2 添加基础组件
      • 代码示例:添加按钮和标签
      • 运行结果:
    • 2.3 布局管理
      • 常用布局管理器:
      • 代码示例:使用垂直布局管理器
      • 运行结果:
    • 2.4 多窗格布局(Splitter)
      • 代码示例:多窗格布局
      • 运行结果:
    • 小结


大三小伙要在备战考研的一年内利用闲余时间从零开始学习 PyQt 并逐步构建一个类似 Visio 风格的低代码软件项目去实现神经网络的拖拽式搭建。先从最基础的内容开始。


学习计划

  1. 环境搭建:安装必要的工具和库。
  2. PyQt 基础知识
    • 如何创建一个简单的窗口。
    • 添加按钮、标签等基础组件。
    • 布局管理(排列组件)。
  3. 高级功能
    • 设计拖拽式界面(核心功能)。
    • 绘图和连线功能(实现类似 Visio 的画布)。
    • 多窗格布局和选项卡(实现类似 PyCharm 的界面)。
  4. 实际应用
    • 集成代码生成功能。
    • 导出设计为图片和对应网络代码。
    • 打包为 EXE 文件。

第 1 步:环境搭建

1.1 安装 Python

  • 从 Python 官网 下载并安装 Python(建议版本 3.8 及以上)。我暂时用的3.10。
  • 安装时勾选 “Add Python to PATH”。

1.2 安装 PyQt

PyQt 是一个基于 Qt 库的 Python GUI 框架。

安装命令:

pip install PyQt6

验证安装:

在终端或命令行中运行以下代码,查看是否安装成功:

import PyQt6
print(PyQt6.__version__)  # 输出版本号表示安装成功

第 2 步:PyQt 基础知识

2.1 创建第一个窗口

PyQt 的核心类是 QApplicationQMainWindow。我们可以从这些类开始。

代码示例:简单窗口

创建一个基础窗口并运行。

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow

# 创建主窗口类
class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("我的第一个 PyQt 窗口")
        self.setGeometry(100, 100, 800, 600)  # 设置窗口位置和大小

# 创建应用程序
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())

运行结果:

  • 打开一个 800x600 的基础窗口,标题为“我的第一个 PyQt 窗口”。
  • 程序运行后,关闭窗口即可结束。
    在这里插入图片描述

2.2 添加基础组件

我们在窗口中添加按钮、标签等基础组件。

代码示例:添加按钮和标签

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("添加组件示例")
        self.setGeometry(100, 100, 400, 300)

        # 添加标签
        self.label = QLabel("欢迎使用 PyQt!", self)
        self.label.setGeometry(100, 50, 200, 50)  # 设置标签的位置和大小

        # 添加按钮
        self.button = QPushButton("点击我", self)
        self.button.setGeometry(100, 150, 100, 50)
        self.button.clicked.connect(self.on_button_click)  # 按钮点击事件

    def on_button_click(self):
        self.label.setText("按钮被点击了!")

# 创建应用程序
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())

运行结果:

  • 窗口中有一个标签和一个按钮。
  • 点击按钮后,标签文字会变成“按钮被点击了!”。
    在这里插入图片描述

2.3 布局管理

当组件较多时,手动设置每个组件的位置非常麻烦。PyQt 提供了 布局管理器 来自动管理组件的排列。

常用布局管理器:

  1. QVBoxLayout(垂直排列)。
  2. QHBoxLayout(水平排列)。
  3. QGridLayout(网格排列)。

代码示例:使用垂直布局管理器

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton, QLabel

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("布局管理示例")
        self.setGeometry(100, 100, 300, 200)

        # 创建主控件和布局
        central_widget = QWidget()  # 主控件
        layout = QVBoxLayout()  # 垂直布局
        central_widget.setLayout(layout)  # 将布局设置到主控件

        # 添加组件到布局
        self.label = QLabel("这是一个标签")
        layout.addWidget(self.label)

        button = QPushButton("点击更改标签")
        button.clicked.connect(self.change_label_text)
        layout.addWidget(button)

        self.setCentralWidget(central_widget)  # 将主控件设置为窗口中央控件

    def change_label_text(self):
        self.label.setText("标签已更改!")

# 创建应用程序
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())

运行结果:

  • 标签和按钮会按照垂直方向自动排列。
  • 点击按钮会修改标签文字。
    在这里插入图片描述

2.4 多窗格布局(Splitter)

在实际项目中,我们需要实现类似 PyCharm 的多窗格布局,可以使用 QSplitter

代码示例:多窗格布局

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QSplitter, QTextEdit, QListWidget
from PyQt6.QtCore import Qt

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("多窗格布局示例")
        self.setGeometry(100, 100, 800, 600)

        # 创建分割器
        splitter = QSplitter(Qt.Orientation.Horizontal, self)

        # 左侧:列表
        list_widget = QListWidget()
        list_widget.addItems(["项目1", "项目2", "项目3"])
        splitter.addWidget(list_widget)

        # 右侧:文本编辑器
        text_edit = QTextEdit()
        splitter.addWidget(text_edit)

        self.setCentralWidget(splitter)  # 设置分割器为中央控件

# 创建应用程序
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())

运行结果:

  • 左侧是一个列表控件,右侧是一个文本编辑器。
  • 中间的分割条可以拖动调整两部分的大小。
    在这里插入图片描述

小结

通过以上内容,掌握 PyQt 的基础知识:

  1. 如何创建窗口。
  2. 如何添加按钮、标签等基础组件。
  3. 使用布局管理器自动排列组件。
  4. 创建多窗格布局。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2263091.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【mac 终端美化】oh my zsh

快捷的mac终端美化方法。 以下是效果图,比较朴素,但是相比默认方案会好看一些,也能明显查看输入的命令,不会和输出混在一起。 下载主题 访问网址:https://iterm2colorschemes.com/,下载网页的压缩包并解…

移动魔百盒中的 OpenWrt作为旁路由 安装Tailscale并配置子网路由实现在外面通过家里的局域网ip访问内网设备

移动魔百盒中的 OpenWrt作为旁路由 安装Tailscale并配置子网路由实现在外面通过家里的局域网ip访问内网设备 一、前提条件 确保路由器硬件支持: OpenWrt 路由器需要足够的存储空间和 CPU 性能来运行 Tailscale。确保设备架构支持 Tailscale 二进制文件,例…

【笔记】深度学习模型评估指标

推荐链接: (0)多分类器的评价指标 (1)泛化误差的评价方法:【机器学习】模型评估与选择(留出法、交叉验证法、查全率、查准率、偏差、方差) (2)机器学习&…

Linux性能监控命令_nmon 安装与使用以及生成分析Excel图表

文章目录 Linux性能监控命令_nmon 安装与使用安装解压创建nmono目录解压到nmono目录当中切换到sources目录下解压 配置环境变量创建软链接到 /usr/bin/ 目录下打开 配置文件 配置环境变量在底部增加如下注册 使用使用说明监控监控CPU监控内存监控磁盘监控网络监控文件系统 后台…

串口通信控制LED灯

做这个东西的目的是锻炼一下自己的编程能力以及系统思维能力 首先,清楚自己要干什么,正点原子大家应该都看过,系统框图是一个比较重要的东西,引导我们去设计和思考。 下面先给出系统框图: 模块划分好后,结构…

WPF+MVVM案例实战与特效(四十五)- 打造优雅交互:ListBox 的高级定制与行为触发(侧边菜单交互面板)

文章目录 1、引言2、案例效果3、案例实现1、依赖安装2、文件创建3、代码实现1、依赖引用与上下文2、个性化视觉效果:自定义 ItemContainerStyle3、页面样式与布局完整代码4、ViewModel 逻辑实现5、子界面代码:3、实现效果4、源代码获取5、总结1、引言 在WPF应用程序开发中,…

分享两个爬虫练习网站+一个python游戏网站

目录 第一个网站第二个Python游戏网站 第一个网站 网站一 第二个 网站二 Python游戏网站 网站三

空天地遥感数据识别与计算--数据分析如何助力农林牧渔、城市发展、地质灾害监测等行业革新

在科技飞速发展的时代,遥感数据的精准分析已经成为推动各行业智能决策的关键工具。从无人机监测农田到卫星数据支持气候研究,空天地遥感数据正以前所未有的方式为科研和商业带来深刻变革。然而,对于许多专业人士而言,如何高效地处…

C++中的进程虚拟内存布局

进程虚拟内存布局 进程虚拟内存布局: .text(代码段):存放的是程序源代码编译后的机器指令,是只读的。 .rodata(只读数据段):存放的是程序中的只读数据,一般是程序里面的…

鸿蒙开发-ArkTS 创建自定义组件

在 ArkTS 中创建自定义组件是一个相对简单但功能强大的过程。以下是如何在 ArkTS 中创建和使用自定义组件的详细步骤: 一、定义自定义组件 使用Component注解:为了注册一个组件,使其能够在其他文件中被引用,你需要使用Component…

计算机网络B重修班-期末复习

[TOC] (计算机网络B重修班-期末复习) 一、单选 (20题,1分/题,共20分) 二、判断 (10题,1分/题,共10分) 三、填空 (10题,1分/题,共10…

SSH连接成功,但VSCode连接不成功

环境 在实验室PC上连接服务器234 解决方案:在VSCode中重新添加远程主机 删除旧的VSCode Server 在远程主机上,VSCode会安装一个‘vscode-server’服务来支持远程开发,有时旧的‘vscode-server’文件可能会导致问题,删除旧的&am…

揭开 Choerodon UI 拖拽功能的神秘面纱

01 引言 系统的交互方式主要由点击、选择等组成。为了提升 HZERO 系统的用户体验、减少部分操作步骤,组件库集成了卓越的拖拽功能,让用户可以更高效流畅的操作系统。 例如:表格支持多行拖拽排序、跨表数据调整、个性化调整列顺序&#xff1…

面试题整理9----谈谈对k8s的理解1

谈谈对k8s的理解 1. Kubernetes 概念 1.1 Kubernetes是什么 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统,其服务、支持和工具的…

Elasticsearch:什么是信息检索?

信息检索定义 信息检索 (IR) 是一种有助于从大量非结构化或半结构化数据中有效、高效地检索相关信息的过程。信息(IR)检索系统有助于搜索、定位和呈现与用户的搜索查询或信息需求相匹配的信息。 作为信息访问的主要形式,信息检索是每天使用…

【深度学习】 零基础介绍卷积神经网络(CNN)

CNN学习 零基础介绍写个CNN最简单的代码一. 概述二. 搭建CNN1. 输入层2. 卷积层3. 激活层4. 池化层5. 全连接层6. 网络搭建小结7. 损失函数8. 梯度下降9. 反向传播10. 模型评估与正则化11. 尝试搭建自己的第一个CNN 三. 经典CNN结构四. 猫狗识别项目实践1. Paddle实现版本&…

flutter 使用dio 请求go语言后台数据接口展示瀑布流图片

添加依赖 dependencies:flutter:sdk: flutterdio: ^5.0.0 # 请检查最新版本flutter_staggered_grid_view: ^0.4.0 添加网络权限 <uses-permission android:name"android.permission.INTERNET" /> go后端代码 图片存放目录 // main.go package mainimport (&q…

ZYNQ初识2(zynq_7010)基于vivado,从PL端调用PS端的时钟

由于需要进行一些FPGA的简单开发&#xff0c;但板载PL端没有焊接晶振&#xff0c;所以需要从PS端借用时钟到PL端使用。 首先新建项目&#xff0c;根据自己的板载选择芯片&#xff0c;我的板载芯片是zynq_7010。 一路next&#xff0c;在自己的vivado的工作文档新建文件夹并给自…

Go语言启动独立进程

文章目录 问题解决方案1. **将 npc.exe 启动为独立的进程**2. **修改 exec.Command 函数**示例代码解释为什么这样有效注意 问题 在你当前的代码中&#xff0c;调用 exec.Command("XXX.exe") 启动 XXX.exe 程序时&#xff0c;这个程序是由 Go 程序直接启动的。如果 …

oracle client linux服务器安装教程

p13390677_112040_Linux-x86-64_4of7.zip 安装前&#xff0c;确认/etc/hosts文件已配置正确 cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.2…