PyQt5+Pycharm 串口上位机入门

### PyQt5与PyCharm实现串口通信上位机入门教程 #### 1. 环境搭建 为了开发基于PyQt5的串口通信上位机程序,首先需要安装必要的依赖库。以下是所需的主要库及其功能说明: - `PyQt5`:用于构建图形用户界面(GUI),提供丰富的控件支持。 - `pyserial`:负责处理串口通信的核心模块。 可以通过以下命令安装这些库: ```bash pip install pyqt5 pyserial ``` 在PyCharm中创建一个新的Python项目,并确保上述库已成功导入到环境中[^1]。 --- #### 2. 获取可用串口号 通过调用`serial.tools.list_ports.comports()`方法可以枚举当前计算机上的所有可用串口号。这一步对于动态显示可选串口非常重要。下面是一个简单的代码片段来展示如何获取并打印所有可用串口列表: ```python import serial.tools.list_ports def list_serial_ports(): ports = list(serial.tools.list_ports.comports()) available_ports = [] for port in ports: available_ports.append(port.device) return available_ports if __name__ == "__main__": print(list_serial_ports()) # 输出所有可用串口设备名 ``` 此部分逻辑通常会被集成至GUI中的下拉菜单组件,以便让用户选择目标串口[^2]。 --- #### 3. GUI设计基础 利用PyQt5提供的工具集,能够快速定义窗口布局以及交互行为。这里推荐采用`.ui`文件作为UI描述方式,再借助`pyuic5`转换成对应的Python脚本形式加载进应用里。 假设已经完成了一个基本窗体的设计(命名为`UI1.ui`),其中包含了几个关键元素如组合框(ComboBox)用来选取波特率/停止位等参数;按钮(Button)控制打开关闭连接状态切换;文本区域(TextEdit)记录收发数据详情等等,则初始化过程大致如下所示: ```python from PyQt5 import QtWidgets, QtCore from UI1 import Ui_MainWindow # 假设这是由 .ui 文件编译而来的 Python 类 class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): def __init__(self): super(MainWindow, self).__init__() self.setupUi(self) app = QtWidgets.QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 以上代码实现了启动应用程序框架并将自定义界面上屏的功能。 --- #### 4. 实现串口读写操作 当用户选定特定配置项之后点击“Connect”按键触发事件响应函数,在该函数内部实例化Serial类对象建立实际物理链路链接。与此同时开启独立线程监听来自远端的数据流更新至前端显示区。 下面是关于发送字符串消息给指定地址的一个例子演示: ```python import _thread class SerialThread(QtCore.QObject): signal_data_received = QtCore.pyqtSignal(str) def __init__(self, ser_instance): super().__init__() self.ser = ser_instance def run(self): while True: try: data = self.ser.read_all().decode('utf-8') if len(data) > 0: self.signal_data_received.emit(data.strip('\n')) except Exception as e: break time.sleep(0.1) def send_message(message): global ser message += '\r\n' # 添加终止符 ser.write(message.encode()) ser = None def connect_to_port(port_name='COM3', baud_rate=9600): global ser ser = serial.Serial(port_name, baud_rate, timeout=0.1) thread = SerialThread(ser) thread.signal_data_received.connect(update_text_area) _thread.start_new_thread(thread.run, ()) ``` 注意这里的多线程机制是为了防止主线程阻塞造成界面卡顿现象发生。 --- #### 5. 完整流程总结 综上所述,整个项目的实施路径涵盖了环境准备、硬件资源探测、可视化编辑器运用直至最终业务逻辑编码等多个环节。每一步都需要精心规划才能达成预期效果。

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

Python内容推荐

Python3+Pycharm+PyQt5环境搭建步骤图文详解

Python3+Pycharm+PyQt5环境搭建步骤图文详解

### Python3+Pycharm+PyQt5环境搭建详解#### 一、概述本文将详细介绍如何在Windows 10 64位操作系统上搭建Python3+Pycharm+PyQt5的开发环境。

基于Python+Pycharm+PyQt5的串口助手

基于Python+Pycharm+PyQt5的串口助手

该项目实现了一个基于Python和PyQt5的串口通信图形界面工具,具备自动识别串口、参数配置、数据收发及DTR/RTS控制功能。采用多线程架构确保UI响应流畅,支持ASCII与HEX格式传输,适用于

Python基于PyQt5制作的一个上位机软件,用来控制一个Arduino四自由度机械臂

Python基于PyQt5制作的一个上位机软件,用来控制一个Arduino四自由度机械臂

开发环境系统: windows10处理器: Intel(R) Core(TM)i7-8550U CPU @ 1.8GHz 2.00GHz开发软件: Pycharm 2017.1Python版本: py

入门级Python应用程序教程(含完整代码).docx

入门级Python应用程序教程(含完整代码).docx

通过这个教程,初学者可以学习到Python的基础知识,理解如何使用PyCharm作为开发工具,熟悉PYQT5进行GUI设计,以及掌握如何用Python进行串口通信和伺服电机的控制。

PycharmProjects_pythonqt串口_qt串口_washgnh_

PycharmProjects_pythonqt串口_qt串口_washgnh_

通过这个项目,我们可以学习到如何结合Python的PyQt和PySerial库来创建一个串口通信的上位机程序,这对于进行嵌入式系统开发、设备调试或者物联网应用来说是非常实用的技能。

入门级Python应用程序教程(含完整代码).pdf

入门级Python应用程序教程(含完整代码).pdf

在开始学习之前,你需要确保已经正确安装了所有必要的软件,包括Python 3.7、PyCharm、PYQT5以及相关的环境变量设置。

python3+qt4+pyserial 串口调试助手 串口波形显示

python3+qt4+pyserial 串口调试助手 串口波形显示

总的来说,这个"python3+qt4+pyserial 串口调试助手 串口波形显示"项目结合了Python3的编程能力,Qt4的界面设计,以及pyserial的串口通信功能,提供了一个实用的工具,帮助开发者和工程师更高效地进行串口设备的调试和测试

PycharmProjects_pythonqt串口_qt串口_washgnh_源码.rar

PycharmProjects_pythonqt串口_qt串口_washgnh_源码.rar

**数据传输与解析**:在串口通信中,发送和接收的数据通常需要进行特定的编码和解码。这可能涉及到二进制数据的处理,以及解析或构建自定义的数据协议。5.

【python上位机开发】(整套源码)

【python上位机开发】(整套源码)

例如,Tkinter库可能用于创建图形用户界面(GUI),通过PySerial库可以实现与下位机的串口通信,而NumPy和Pandas库可能用于数据的分析和处理。

Python 串口工具(源码+.exe文件)

Python 串口工具(源码+.exe文件)

在本例中,开发者使用了Python的图形用户界面(GUI)库,可能包括PyQt或wxPython等,这些库允许开发者创建美观且功能丰富的交互式界面。

python安装pyqt5-tools失败原因分析

python安装pyqt5-tools失败原因分析

首先,PyQt5是用于创建跨平台的GUI应用程序的工具集,它包含了Qt库的一个Python绑定,而pyqt5-tools则是PyQt5的工具集。

python串口调试GUI

python串口调试GUI

在构建串口调试GUI时,通常会结合Python的图形库,如Tkinter或PyQt,创建一个具有友好界面的应用程序,包括串口选择、波特率设置、数据位、停止位、校验位等配置选项,以及发送和接收数据的文本框

基于PyCharm 使用python脚本语言开发一款Serial2MQTT工具

基于PyCharm 使用python脚本语言开发一款Serial2MQTT工具

该项目基于Python开发,实现串口与MQTT协议间的双向数据转发。通过PyCharm集成开发环境,结合pyserial和paho-mqtt库,完成串口数据采集并上传至MQTT Broker,同时可接

Windows平台可运行的Python串口调试工具,含PyQt5图形界面和多线程串口收发功能

Windows平台可运行的Python串口调试工具,含PyQt5图形界面和多线程串口收发功能

这是一套开箱即用的串口通信调试工具,基于Python 3.8开发,适配Windows 10系统,使用PyCharm专业版编写。核心功能包括串口参数配置(波特率、数据位、停止位、校验位)、实时数据发送与

Python,pycharm,集成工具套件,保护二进制合并工具,串口助手工具,can参数配置工具,升级工具等

Python,pycharm,集成工具套件,保护二进制合并工具,串口助手工具,can参数配置工具,升级工具等

内容概要集成工具套件是基于Python和PyQt6开发的专业级嵌入式开发辅助软件,采用模块化设计架构,将四大常用工具集成于统一平台。该套件包含二进制文件合并工具、CAN总线参数配置工具、串口调试助手和

pycharm + pyqt5 实现串口读取和显示

pycharm + pyqt5 实现串口读取和显示

本文介绍了基于PyQt5的物联网数据汇集点应用程序,实现了串口通信与SQLite数据库的数据存储功能。代码包含了串口配置、设备信息及数据缓存等全局变量,并支持数据接收、显示、分页浏览和图形绘制。

PyQT多线程串口工程文件 PyCharm

PyQT多线程串口工程文件 PyCharm

它提供代码高亮、自动完成、调试、版本控制集成等功能,为PyQT开发提供了良好的支持。在这个项目中,PyCharm被用作编写、运行和调试代码的平台。**5.

PyQt串口助手

PyQt串口助手

5. **多线程**:为了防止串口操作阻塞UI,可以使用多线程技术,将串口读写放在后台线程执行。

PyQt5重写QComboBox的鼠标点击事件方法

PyQt5重写QComboBox的鼠标点击事件方法

### PyQt5重写QComboBox的鼠标点击事件方法详解#### 一、背景介绍在PyQt5中,`QComboBox` 是一个非常常用的组件,它允许用户从一组预定义的选项中选择一个值。

PyQT多线程串口文件 PyCharm

PyQT多线程串口文件 PyCharm

源码直接下载地址: https://pan.quark.cn/s/c98a68b1a7f4 **PyQT多线程串口工程文件在PyCharm中的实践应用** PyQT作为一个基于Python的图

最新推荐最新推荐

recommend-type

2026安卓开发从零实战指南:环境搭建、核心基础与避坑干货(适配新版Android_Studio).pdf

2026安卓开发从零实战指南:环境搭建、核心基础与避坑干货(适配新版Android_Studio).pdf
recommend-type

如何实现科研成果转化率的有效提升与技术市场精准对接?.docx

如何实现科研成果转化率的有效提升与技术市场精准对接?
recommend-type

基于PID控制的ABS汽车防抱死制动系统、车轮滑移率+最优滑移率Carsim和Simulink联合仿真(带参考文献)

内容概要:本文档系统研究了基于PID控制的ABS汽车防抱死制动系统,聚焦于车轮滑移率与最优滑移率的动态控制问题,采用Carsim与Simulink联合仿真平台构建高精度车辆动力学模型与控制系统。研究详细阐述了ABS的工作机理,通过设计PID控制器实时调节制动压力,确保车轮滑移率稳定在最优区间,从而最大化轮胎与路面间的摩擦力,提升制动效能与行车安全性。文档涵盖了完整的建模流程、控制策略设计、仿真验证方法及参数整定过程,并提供了详实的参考文献支持,增强了研究的可复现性与工程应用价值。; 适合人群:具备车辆工程、自动化或控制理论等相关专业背景,熟悉MATLAB/Simulink与Carsim仿真环境的研究生、科研人员及汽车行业技术研发工程师。; 使用场景及目标:①用于ABS控制算法的教学讲解与科研实验;②支撑车辆制动性能优化、主动安全系统开发等实际工程应用;③为相关学术论文撰写、课题复现与技术创新提供理论依据与技术参考。; 阅读建议:建议读者结合所提供的仿真模型与参考文献,逐步运行并调试代码,重点关注滑移率计算逻辑、PID参数整定方法及联合仿真的数据交互机制,同时可尝试引入模糊控制、自适应控制等先进算法进行对比分析,以深入掌握ABS系统的控制精髓与优化路径。
recommend-type

高校如何利用技术转移数据分析优化成果转化路径?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
recommend-type

MATLAB采用改进的PSO实现AUV三维路径规划,配备自适应惯性权重、距离演化因子和跳出机制。.zip

MATLAB采用改进的PSO实现AUV三维路径规划,配备自适应惯性权重、距离演化因子和跳出机制。.zip
recommend-type

基于Vue CLI的现代化Web FTP客户端:模块化架构、跨平台支持与生产级优化

基于Vue CLI构建的现代化FTP客户端可视化界面项目,本质上是一个将传统命令行或桌面端FTP协议交互能力迁移至现代Web前端架构中的创新实践,它深度融合了前端工程化、网络协议封装、跨平台适配与云原生理念,代表了企业级文件传输管理工具在B/S架构下的演进方向。该项目以Vue CLI作为核心脚手架,意味着其底层构建体系严格遵循Vue官方推荐的最佳实践:采用Webpack 5(Vue CLI 5+默认)进行模块打包,支持ES2015+语法、TypeScript可选集成、CSS预处理器(如Sass/Less)、PostCSS自动前缀补全及CSS Modules作用域隔离;同时内置开发服务器(webpack-dev-server),提供HTTPS代理、热模块替换(HMR)与实时热重载能力——当开发者修改.vue单文件组件、JS逻辑或样式资源时,页面局部而非整页刷新,极大提升调试效率与开发体验。 项目强调“文件传输管理”功能,这并非简单调用浏览器原生File API上传下载,而是通过WebSocket或长轮询+RESTful API与后端FTP代理服务通信,实现对远程FTP服务器的目录浏览、文件上传/下载/重命名/删除/权限修改等完整CRUD操作。由于浏览器沙箱限制无法直接建立FTP连接,因此必须依赖中间层服务(如Node.js编写的FTP网关),该服务负责解析前端指令、调用node-ftp、jsftp或更安全的ssh2-sftp-client等库与真实FTP/SFTP服务器交互,并将结构化响应(含文件列表、传输进度、错误码、权限位等)以JSON格式回传前端。前端需设计健壮的状态管理机制(Vuex或Pinia),统一维护连接状态、当前路径、选中文件、传输队列、断点续传标识等关键数据,并通过响应式视图(如树形目录组件、表格文件列表、进度条、拖拽上传区)实现直观的Web界面操作体验。 “跨平台支持”不仅指代码可在Windows/macOS/Linux任意系统浏览器中运行,更深层体现为UI适配(响应式布局+Flex/Grid+Media Query)、字体渲染一致性(Web Font加载策略)、本地存储兼容性(IndexedDB + localStorage降级方案)以及Electron或Tauri二次封装潜力——即未来可一键打包为桌面应用,共享同一套业务逻辑代码,真正实现“Write Once, Run Everywhere”。而“生产环境优化”涵盖多维度:路由懒加载(import()动态导入)降低首屏体积;图片资源自动压缩与WebP格式fallback;CSS提取与内联关键样式;Gzip/Brotli压缩配置;SourceMap脱敏处理;CDN资源外链;HTTP/2服务端推送预加载;以及Vue CLI内置的--mode production构建模式触发Tree-shaking、Scope Hoisting、UglifyJS/Terser代码压缩与死代码消除,确保最终dist包体积精简、加载迅速、执行高效。 “代码质量检测”体系由ESLint(配合@vue/eslint-config-typescript规则集)、Stylelint(校验CSS/SCSS)、Prettier(统一代码风格)、Commitlint(规范Git提交信息)与SonarQube(CI阶段静态扫描)共同构成,覆盖语法错误、潜在bug、安全漏洞(如XSS注入点)、可维护性指标(圈复杂度、重复率)等维度,并通过husky + lint-staged实现pre-commit钩子拦截低质量代码入库。“自定义配置扩展”则体现在Vue.config.js或vue.config.ts中灵活配置别名(@→src)、代理跨域(devServer.proxy指向FTP网关)、externals剥离第三方库(如moment.js交由CDN加载)、chainWebpack深度定制Webpack配置链,甚至通过vue-cli-plugin机制开发专属插件(如FTP连接向导插件、证书管理插件)。“模块化架构”严格划分功能域:core(FTP协议抽象层)、store(状态中心)、router(路由守卫与权限控制)、components(原子化UI组件如FTPPathBreadcrumb、TransferQueuePanel)、views(页面级容器)、utils(文件大小格式化、路径解析、编码转换等纯函数)、services(API请求封装与错误统一处理),各模块通过明确接口契约协作,支持按需加载与独立测试。 值得注意的是,标签标注为“云原生/Kubernetes”,暗示该项目并非孤立前端应用,而是云原生生态中的一环:其部署单元应为Docker容器镜像(含Nginx静态服务+健康检查探针),通过Helm Chart定义K8s资源清单(Deployment、Service、Ingress、ConfigMap存储FTP网关地址与认证密钥),利用K8s ConfigMap/Secret实现配置与凭证外部化管理,借助Horizontal Pod Autoscaler应对高并发文件传输请求,结合Prometheus+Grafana监控前端资源加载性能与API成功率,甚至通过Service Mesh(如Istio)实现灰度发布与流量治理。整个系统体现云原生“不可变基础设施、声明式API、弹性伸缩、可观测性”四大特征,使FTP可视化管理能力具备企业级可靠性、可扩展性与运维自动化水平。
recommend-type

Python 3 新手避坑指南:从环境搭建到工程化实践

Python 3 使用指南(一),这个标题看起来基础,但越是基础的东西,越值得认真梳理。我带过的不少新人,往往就是因为入门时遗漏了一些关键细节,后面踩坑踩得怀疑人生。这一篇我打算把 Python 3 真正干活前要搞清楚的事情一次性讲透:环境怎么搭、基础语法怎么用才规范、数据结构怎么选才高效、函数和类怎么写才像正经工程代码,以及遇到诡异报错时怎么快速定位。目标是让完全零基础的人能照着走通,也让写过一段时间但全凭感觉的人补上那些“当初没人告诉我”的知识点。 ## 1. 从零搭建 Python 3 开发环境 先说环境。这一步看着简单,实际上我见过太多人卡在“明明装了 Python,一敲命令提示找
recommend-type

在 Overleaf 项目里怎么把共享编辑的人踢出去?

### 如何在 Overleaf 项目中移除协作者 要在 Overleaf 中移除某个项目的协作者,可以通过以下方法实现: #### 访问权限设置页面 进入目标项目的主页后,点击右上角的“Menu”按钮,在下拉菜单中选择“Settings”选项[^1]。 #### 进入协作者管理界面 在设置页面中找到“Collaborators”部分。这里会显示当前已添加的所有协作者及其访问级别(查看者或编辑者)。通过此区域可以管理和调整每位用户的权限[^2]。 #### 移除指定协作者 对于不再需要授权给该项目的人,点击其名字旁边的垃圾桶图标即可将其删除。一旦执行该操作,被移除的用户将失去对该文档的
recommend-type

易语言实现B站创作积分兑换3天大会员库存实时监测工具

“易语言B站大会员库存检测”这一标题所指向的,是一个面向Bilibili(哔哩哔哩)平台创作者生态的轻量级自动化监测工具,其核心功能是实时探测B站创作中心中“3天大会员”兑换商品的库存状态,并在库存可兑时通过邮件方式主动通知用户。该工具虽技术门槛较低,却完整覆盖了现代Web自动化脚本开发中的多个关键知识点,尤其适合作为易语言初学者理解HTTP协议、身份认证机制、状态维持原理及跨服务集成(如邮件推送)的典型教学案例。 首先,从底层通信机制来看,该工具依赖标准的HTTP GET请求向B站服务器发起资源查询。但需特别强调的是:单纯发送GET请求无法获取有效响应——因为B站所有涉及用户权益的操作(包括创作积分查询、会员兑换页访问、库存接口调用)均强制要求登录态校验。因此,“利用Cookie进行操作”绝非一句轻描淡写的补充说明,而是整个程序能否正常运行的生命线。Cookie在此处承担着三重核心职责:第一,它是服务端颁发的会话凭证(Session ID),用于将无状态的HTTP连接与后端用户会话上下文绑定;第二,它封装了用户身份标识(如DedeUserID、SESSDATA、bili_jct等关键字段),其中SESSDATA为B站主登录态Token,有效期通常为数小时至数天,一旦过期或被清除,所有接口将返回401未授权或跳转至登录页;第三,部分接口还依赖Cookie中携带的CSRF Token(即bili_jct)以防范跨站请求伪造攻击,缺失该字段会导致POST类操作被拦截,而本工具虽以GET为主,但在模拟真实浏览器行为时仍需完整复现全量合法Cookie。 其次,该工具所调用的具体API并非公开文档接口,而是逆向分析B站创作中心前端JS代码后提取的内部接口,典型路径如`https://api.bilibili.com/x/credit/jury/caseUser?jsonp=jsonp`或更可能指向积分商城相关路径(如`/x/ugcpay/web/v2/trade/preview`或`/x/ugcpay/web/v2/trade/stock`)。这类接口往往具有严格的Referer校验、User-Agent指纹识别及频率限流策略。因此,程序中不仅需构造合法Cookie,还需同步设置匹配的Headers头信息,包括但不限于:`Referer: https://www.bilibili.com/`(防止防盗链拒绝)、`User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...`(规避爬虫特征识别)、`Origin: https://www.bilibili.com`(满足CORS预检要求)。任何一项Header缺失或格式错误,均可能导致返回空数据、重定向至登录页或触发风控拦截。 再者,“连接邮件服务器将信息发送至个人邮箱”这一功能模块,实质上实现了应用层的通知闭环。在易语言中,该功能通常通过调用Winsock组件或第三方SMTP插件实现:需配置SMTP服务器地址(如smtp.qq.com:587)、启用TLS/SSL加密通道、提供发件人邮箱账号与授权码(非登录密码)、构造符合RFC 5322标准的邮件正文(含HTML格式化库存提示、时间戳、跳转链接等),并处理DNS解析、TCP三次握手、SMTP协议交互(HELO/EHLO → AUTH LOGIN → MAIL FROM → RCPT TO → DATA)等全过程。此过程暴露出初学者常忽略的关键细节:QQ邮箱等服务商已全面禁用明文密码登录,必须使用独立生成的“SMTP授权码”;若未正确启用STARTTLS升级加密,连接将被拒绝;邮件主题与正文若含中文,必须进行UTF-8编码+Base64或QP编码,否则出现乱码;此外,频繁发信可能触发反垃圾邮件机制,需加入合理延时与失败重试逻辑。 尤为值得深入剖析的是其业务逻辑设计的精巧性:“库存会不定时更新”意味着不能依赖固定时间轮询,而应构建智能检测策略。理想实现应包含动态间隔调节(如空闲期拉长至5分钟,临近刷新窗口缩短至30秒)、响应内容差异比对(对比前后两次JSON返回的`stock`字段值变化而非仅判断是否为0)、异常状态熔断(连续N次超时/502/412则暂停检测并告警)、本地日志持久化(记录每次请求时间、响应码、库存值、耗时,便于问题回溯)。而原始描述中“技术含量不高”的表述,恰恰反衬出工程实践中对鲁棒性、可观测性、可维护性的更高要求——一个能稳定运行三个月不崩溃的脚本,其价值远超十个仅能演示一次的Demo。 最后,该工具隐含了重要的安全与合规警示:自动化脚本若高频请求可能违反B站《用户协议》第4.3条关于“不得使用任何自动化手段干扰网站正常运营”的规定;未经许可批量获取用户数据涉嫌侵犯个人信息权益;邮件通知若泄露SESSDATA等敏感Cookie字段,将导致账号被盗风险。因此,合格的学习者必须同步掌握Robots.txt协议遵循、请求速率控制(如每分钟≤10次)、敏感信息内存加密存储、运行环境沙箱隔离等进阶防护措施。综上所述,这短短一行标题背后,是一套融合网络协议、Web安全、逆向工程、邮件系统、工程规范与法律意识的立体知识图谱,其教学价值远超表面所见。
recommend-type

Python 3基础入门:环境搭建、语法核心与异常处理

作为一个写了好多年 Python、也踩过无数坑的人,我一直觉得基础部分的入门方式决定了后面的路好不好走。市面上“Python 3 使用指南”类的东西很多,但多数要么罗列语法,要么直接上手框架,真正把“为什么这么写”“什么时候该用哪个”讲透的反而少。这篇是系列的第一篇,我会把跑通 Python 3 最核心的一圈讲完:环境怎么搭、基础语法怎么理解、四大数据结构怎么选、代码怎么组织、报错了怎么排查。内容按“拿来就能用”的标准写,零基础能跟着操作,写过其他语言的朋友也能快速对齐思路。 ## 1. 环境准备:把 Python 3 跑起来之前,先想清楚这几件事 很多新手一上来就装环境,装完发现 pip