首页
Search
1
C# 击败 Python 成为 TIOBE 2025 年度编程语言,业界地位仍面临 Java 生态优势挑战
13 阅读
2
IT、互联网行业就业热度依旧!这份调研报告出炉
10 阅读
3
韩报告:中国IT行业需求恢复有望推动韩国对华出口增加
7 阅读
4
巫妖易语言+js逆向+安卓逆向,巫妖易语言,探索JS逆向与安卓逆向的深度应用
5 阅读
5
全国信息学奥赛入门级竞赛被举报泄题,中国计算机学会:收到举报,正在调查
5 阅读
采集分类
技术分享
工具分享
登录
Search
私人云
累计撰写
1,121
篇文章
累计收到
3
条评论
首页
栏目
采集分类
技术分享
工具分享
页面
搜索到
1121
篇与
的结果
2026-02-01
Python中split函数使用技巧
Python中split函数可用于按分隔符截取字符串,只需调用该方法并传入指定分隔符即可实现字符串分割操作。1、 split函数的使用方法所示。2、 定义字符串变量并输入英文内容。3、 使用split函数可直接分割字符串。4、 可通过指定分隔符截取字符串,末尾数值-1表示完整提取英文句子。5、 将split后参数设为正数时,表示按指定索引位置进行截取。6、 将英文句子中的分隔符按图示进行替换。7、 可自定义分隔符来截取字符串中的内容。8、 程序运行结果所示。海量资讯、精准解读,尽在新浪财经APP
2026年02月01日
0 阅读
0 评论
0 点赞
2026-02-01
PY880 窗体设计器 – 让Python窗体GUI 开发和VB6一样简单
PY880 窗体设计器 – Python窗体GUI 开发的革命性工具产品概述PY880 窗体设计器是一款专为 Python GUI 窗体开发打造的可视化窗体设计工具,基于成熟的 .NET Framework 技术栈开发。它采用经典的 WinForm/VB6 设计器界面,让有 Windows 编程经验的开发者能够零基础直接上手 Python GUI 开发。熟悉vb/vba/c#窗体设计器操作的朋友,可以零基础直接上手,无需学习任何py窗体基础知识就可以快速开发出窗体GUI功能!VB6已死,但VB6的精神不死,可视化快速拖放窗体控件,是最实用的快速开发方式,现在让他和py深入结合,可以让任何人在10分钟内学会python的窗体gui开发!产品定位•面向对象:Python 开发者、非职业程序员、Windows 应用开发者•核心价值:填补 Python 生态环境中窗体设计工具的空白,提供类似 Visual Studio 的可视化设计体验•技术路线:使用 WinForm/VB/C# 设计器界面设计,自动生成 Python Tkinter/ttkbootstrap 窗体代码 后解决的问题Python GUI 开发长期以来面临以下痛点:1.学习成本高:需要深入学习 布局管理、控件属性等复杂概念2.调试困难:在代码中进行 UI 界面开发和调试非常繁琐,无法实时预览3.AI 能力限制:AI 生成界面时只能得到大概框架,复杂界面和精细调整力不从心4.工具缺失:缺乏类似 Visual Studio/VB6/VBA 的窗体可视化设计工具 有qt设计器但是对初学者并不友好5.维护困难:界面修改需要修改大量代码,容易出错PY880窗体设计器完美解决了这些问题,让 Python GUI 开发变得简单高效。设计器主界面核心特色1. 全中文操作界面PY880 窗体设计器提供完整的中文界面,包括:•中文化菜单栏:所有菜单项均为中文 0学习成本•中文化工具栏:工具按钮带有中文提示•中文化控件属性:控件属性以中文显示,如”文本”、”位置”、”大小”、”背景”等•中文化提示信息:操作提示、错误信息均为中文这使得非职业程序员群体能够轻松使用,无需担心语言障碍。2. 控件属性中文名称显示这是 PY880 窗体设计器的一大创新。在属性面板中,所有控件属性都以中文显示,例如:属性面板3. UI 代码与逻辑代码分离PY880 窗体设计器采用先进的代码生成策略:•UI 代码:自动生成的界面代码,包含所有控件的创建和布局•逻辑代码:业务逻辑代码,由开发者或 AI 编写•完全分离:两者完全独立,互不影响•可重复生成:界面修改后可重新生成 UI 代码,不会覆盖业务逻辑这种设计特别适合长期维护的项目,界面可以反复调整而不影响业务逻辑。4. 不影响 Python 生态PY880 窗体设计器的设计理念是:•无需单独编译器:生成的 Python 代码可以直接运行•集成现有编辑器:支持 VS Code、Trae 等现代化编辑器•标准 Python 代码:生成的是标准的 Python Tkinter/ttkbootstrap 代码•独立运行:生成的代码不依赖设计器本身5. 实时预览功能设计过程中可以实时预览界面效果:•Winfrom预览:直接生成Winfrom窗体预览 可快速查看布局效果•原生 Tkinter 预览:使用原生 Tkinter 渲染•ttkbootstrap 主题预览:支持多种 ttkbootstrap 主题•即时反馈:修改属性后立即看到效果实时预览功能详解1. 可视化窗体设计拖拽式设计从控件工具箱中拖拽控件到窗体上,即可完成控件添加:• 支持所有标准控件• 拖拽时显示位置提示精准定位•智能布局辅助:显示对齐辅助线 快速对齐不用自己改坐标•多选操作:支持 Ctrl+点击多选、Shift减掉选择•框选操作:支持框选操作 支持从导航目录树选择•导航目录树选择:支持从导航目录树选择 负责布局更方便调整多窗体支持• 支持同时打开多个设计文档• 支持多标签页切换• 支持窗体之间的控件复制粘贴2. 控件工具箱控件工具箱按功能分类组织,包含丰富的控件:容器控件•GroupBox:带标题的框架容器•Panel:无标题的框架容器•TableLayoutPanel:表格布局面板,支持行列管理•TabControl:选项卡控件,支持多标签页•SplitContainer:分割容器,支持可调整的分隔条公共控件•Button:按钮,支持多种样式•Label:标签,用于显示文本•TextBox:单行文本框•RichTextBox:多行文本框,支持富文本•CheckBox:复选框•RadioButton:单选按钮•ComboBox:组合框,支持下拉选择•NumericUpDown:数值输入框•TrackBar:数值滑块•ProgressBar:进度条•DateTimePicker:日期选择器•ListBox:列表框•ListView:列表视图•TreeView:树形视图•DataGridView:表格组件菜单和工具栏•MenuStrip:菜单栏控件工具箱3. 属性编辑面板属性编辑面板提供全面的属性编辑功能:属性查看• 显示选中控件的所有属性• 按类别组织属性(常用属性、布局、外观、行为等)属性编辑• 支持直接编辑属性值• 支持下拉选择(如枚举值)• 支持颜色选择器• 支持字体选择器• 支持图片选择器• 导航目录树双击节点可直接重命名实时预览• 属性修改后立即显示效果• 支持撤销/重做Python 属性映射属性值自动映射为 Python Tkinter/ttkbootstrap 属性,无需手动转换。4. 控件树导航控件树导航提供层次化的控件结构管理:复杂布局 嵌套布局容器时显示为树形结构,方便管理树形结构• 清晰展示窗体控件层次• 支持展开/折叠节点• 显示中文名称节点管理•重命名:支持双击节点弹出重命名对话库•快速定位:点击节点快速定位到控件•多选支持:支持 Ctrl+点击进行多选•搜索支持:支持 顶部模糊搜索控件5. 高级设计功能布局管理对齐工具提供多种对齐方式:•左对齐:将选中控件左对齐•右对齐:将选中控件右对齐•顶部对齐:将选中控件顶部对齐•底部对齐:将选中控件底部对齐•水平居中:将选中控件水平居中•垂直居中:将选中控件垂直居中间距调整•统一水平间距:统一选中控件的水平间距•统一垂直间距:统一选中控件的垂直间距尺寸调整•相同宽度:将选中控件设置为相同宽度•相同高度:将选中控件设置为相同高度•相同大小:将选中控件设置为相同大小表格布局这是 PY880 窗体设计器的特色功能之一: •一键打包进表格:将选中的控件自动打包到 TableLayoutPanel 中•一键解包表格:将 TableLayoutPanel 中的控件解包出来•表格一键均分:•水平均分:将表格的列宽度均分•垂直均分:将表格的行高度均分•全部均分:同时进行水平和垂直均分•剩余水平均分:均分剩余的列•剩余垂直均分:均分剩余的行表格布局表格弹性布局PY880 窗体设计器的 TableLayoutPanel 支持强大的弹性布局功能,可以实现自适应行高列宽,并支持混合弹性布局,即部分行列固定,部分行列随窗体大小伸缩。核心特性:1.自适应行高列宽• 表格可以随窗体大小变化自动调整行高和列宽• 支持百分比布局,按比例分配空间• 支持自动填充剩余空间2.混合弹性布局•固定行列:可以设置某些行或列为固定大小,不随窗体变化•弹性行列:可以设置某些行或列为弹性大小,按比例伸缩•自动行列:可以设置某些行或列为自动大小,根据内容调整3.行列属性设置•Absolute:绝对大小(固定像素值)•Percent:百分比大小(按比例伸缩)•AutoSize:自动大小(根据内容调整)•SizeType:设置行列大小类型•Width/Height:设置具体的宽度或高度值•MinimumSize:设置最小尺寸限制•MaximumSize:设置最大尺寸限制应用场景示例:1.标准表单布局第1行:固定高度 40px(按钮加文本框)第2行:自动高度(100%)第3行:固定高度 40px 状态栏第1列:固定宽度 100px(标签)第2列:弹性宽度(100%)2.复杂混合布局第1行:固定高度 40px(工具栏)第2行:弹性高度 60%(主内容区)第3行:弹性高度 40%(详细信息区)第1列:固定宽度 200px(导航栏)第2列:弹性宽度 100%(内容区)3.响应式布局多行多列 自适应Flex网格布局支持操作方法:1.设置行列属性• 在属性面板中选择 TableLayoutPanel• 展开 “Rows” 或 “Columns” 属性• 点击对应行或列的属性进行编辑• 设置 SizeType 和 Width/Height 值2.快速设置弹性布局• 右键点击 TableLayoutPanel• 选择”设置弹性布局”• 选择预设的布局模式或自定义配置3.一键均分• 选中 TableLayoutPanel• 使用工具栏的”表格均分”按钮• 选择水平均分、垂直均分或全部均分代码生成示例:# 生成的弹性布局代码示例class MainForm_UI(ttk.Window):def __init__(self):super().__init__()self.title("弹性布局示例")self.geometry("800x600")self.resizable(True, True)# 创建 TableLayoutPanelself.tableLayoutPanel = ttk.Frame(self)self.tableLayoutPanel.pack(fill="both", expand=True)# 配置行列(弹性布局)self.tableLayoutPanel.grid_rowconfigure(0, weight=0) # 固定行self.tableLayoutPanel.grid_rowconfigure(1, weight=1) # 弹性行self.tableLayoutPanel.grid_rowconfigure(2, weight=2) # 弹性行self.tableLayoutPanel.grid_columnconfigure(0, weight=1) # 弹性列self.tableLayoutPanel.grid_columnconfigure(1, weight=3) # 弹性列# 添加控件self.lblTitle = ttk.Label(self.tableLayoutPanel, text="标题")self.lblTitle.grid(row=0, column=0, columnspan=2, sticky="ew", pady=5)self.txtContent = ttk.Text(self.tableLayoutPanel)self.txtContent.grid(row=1, column=0, columnspan=2, sticky="nsew", padx=5, pady=5)self.btnOK = ttk.Button(self.tableLayoutPanel, text="确定")self.btnOK.grid(row=2, column=0, sticky="ew", padx=5, pady=5)self.btnCancel = ttk.Button(self.tableLayoutPanel, text="取消")self.btnCancel.grid(row=2, column=1, sticky="ew", padx=5, pady=5)优势:1.响应式设计:界面可以自适应不同屏幕尺寸和分辨率2.灵活布局:支持固定、弹性、自动三种布局模式的混合使用3.易于维护:通过可视化界面调整布局,无需手动计算坐标4.专业效果:实现类似现代 Web 应用的响应式布局效果5.代码简洁:生成的代码简洁清晰,易于理解和维护框架布局•放入框架:将选中控件放入 Panel 中•放入有标题框架:将选中控件放入 GroupBox 中•解开框架:将框架中的控件解包出来选择模式•单选模式:点击选择单个控件•多选模式:Ctrl+点击选择多个控件•区域选择:Shift+点击进行区域选择撤销/重做•撤销操作:Ctrl+Z 撤销上一步操作•重做操作:Ctrl+Y 重做被撤销的操作• 支持无限级撤销/重做复制/粘贴/剪切/删除•复制:Ctrl+C 复制选中控件•粘贴:Ctrl+V 粘贴控件•剪切:Ctrl+X 剪切选中控件•删除:Delete 删除选中控件层级调整•置于顶层:将控件置于顶层•置于底层:将控件置于底层6. DockPanel 集成采用现代化的 DockPanel 布局,提供灵活的界面管理:•面板停靠:工具箱、属性面板、控件树可自由停靠到任意位置•自动隐藏:面板可设置为自动隐藏模式,节省空间•标签切换:多文档界面支持,便于切换不同设计文档•布局保存:支持保存和恢复布局配置•拖拽调整:支持拖拽调整面板大小和位置DockPanel 布局7. Python 代码生成与反向工程这是 PY880 窗体设计器的核心特色功能。代码生成支持的代码格式•原生 Tkinter 代码:生成标准的 Python Tkinter 代码•ttkbootstrap 代码:生成基于 ttkbootstrap 的美化界面代码•单文件模式:单独生成UI代码 不破坏业务逻辑模块•双文件模式:将 UI 代码和业务逻辑代码分离到两个文件中 用于首次生成代码代码生成选项•主题选择:支持多种 ttkbootstrap 主题(cosmo、flatly、journal 等)•代码格式化:自动格式化生成的代码•注释生成:自动生成代码注释•事件绑定:生成事件处理框架 事件写法秉承VB6风格!反向工程代码还原设计• 从已有的 Python Tkinter 代码还原为设计文件• 支持解析复杂的控件嵌套结构• 支持解析控件属性和布局编辑器集成•VS Code 集成:支持在 VS Code 中中进行代码与设计的转换•Trae IDE 集成:支持在 Trae IDE 中进行代码与设计的转换•文件右键菜单:选中ai生成的py代码可转设计文件 选中xml设计文件可打开设计器UI 代码分离PY880 窗体设计器采用先进的 UI 代码分离策略:双文件模式• main_ui.py:UI 代码文件,包含界面定义•main.py:主程序文件,包含业务逻辑可重复生成• 界面修改后可重新生成 UI 代码• 不会覆盖业务逻辑代码• 支持增量更新9. 最近文件管理• 自动记录最近打开的文件• 支持快速打开最近文件• 支持清除最近文件记录设计1. 不影响 Python 已有生态PY880 窗体设计器的设计理念是不影响 Python 生态:•无需单独编译器:生成的 Python 代码可以直接运行,无需额外编译•标准 Python 代码:生成的是标准的 Python Tkinter/ttkbootstrap 代码•独立运行:生成的代码不依赖设计器本身•无侵入性:不修改 Python 解释器或库2. 集成现有编辑器PY880 窗体设计器可以集成到现有的编辑器中:•VS Code 集成:通过扩展插件集成到 VS Code•Trae IDE 集成: 通过扩展插件 支持 Trae IDE3. UI 代码与逻辑代码分离PY880 窗体设计器采用先进的代码生成策略:优势•可维护性:UI 代码和业务逻辑代码分离,便于维护•可重复生成:界面修改后可重新生成 UI 代码,不影响业务逻辑•团队协作:UI 设计师和程序员可以分工协作•版本控制:UI 代码和业务逻辑代码可以独立版本控制实现方式•双文件模式:UI 代码和业务逻辑代码分别保存•继承机制:业务逻辑类继承 UI 类•事件绑定:在业务逻辑类中绑定事件处理4. 降低学习门槛PY880 窗体设计器的一个重要目标是降低 Python GUI 开发的学习门槛:传统方式的痛点1.学习成本高:需要学习大量 Python GUI 编程知识2.调试困难:在代码中进行 UI 界面开发和调试非常麻烦3.AI 能力限制:AI 生成界面时只能得到大概框架,复杂界面和微调力不从心解决方案1.零基础上手:使用经典的 VB6/WinForm 设计器界面2.可视化操作:拖拽式设计,无需编写代码3.即时反馈:实时预览效果,无需调试4.AI 协作:结合 AI 生成初稿和人工精确调整5. 长期维护支持PY880 窗体设计器特别适合长期维护的项目:•UI 代码可重复生成:界面修改后可重新生成 UI 代码•业务逻辑不受影响:UI 代码和业务逻辑代码分离•版本控制友好:UI 代码和业务逻辑代码可以独立版本控制•团队协作友好:UI 设计师和程序员可以分工协作AI 协作开发PY880 窗体设计器特别为 AI 协作开发设计了完整的工作流程。工作流程1. AI 生成初稿AI 根据需求生成 Python Tkinter 界面代码,采用继承模式和中文变量命名:# AI 生成的 UI 基类代码 (用户登录_ui.py)import ttkbootstrap as ttkfrom ttkbootstrap.constants import *class 用户登录_UI(ttk.Window):"""UI基类 - 只包含界面布局,不包含事件逻辑"""def __init__(self, themename: str = "darkly"):super().__init__(themename=themename)self.title("用户登录")self.geometry("394x268")self.resizable(False, False)self._setup_ui()self._bind_events()def _setup_ui(self):"""创建所有控件"""# 标题标签self.lblTitle = ttk.Label(self, text="用户登录", font=("微软雅黑", 14, "bold"))self.lblTitle.place(x=0, y=20, width=397, height=30)# 用户名标签self.lblUsername = ttk.Label(self, text="用户名:", font=("微软雅黑", 10))self.lblUsername.place(x=60, y=80, width=80, height=25)# 用户名输入框self.txtUsername = ttk.Entry(self, font=("微软雅黑", 10))self.txtUsername.place(x=150, y=80, width=180, height=28)# 密码标签self.lblPassword = ttk.Label(self, text="密码:", font=("微软雅黑", 10))self.lblPassword.place(x=60, y=120, width=80, height=25)# 密码输入框self.txtPassword = ttk.Entry(self, font=("微软雅黑", 10), show="*")self.txtPassword.place(x=150, y=120, width=180, height=28)# 登录按钮self.btnLogin = ttk.Button(self, text="登录")self.btnLogin.place(x=100, y=180, width=80, height=35)# 取消按钮self.btnCancel = ttk.Button(self, text="取消")self.btnCancel.place(x=220, y=180, width=80, height=35)def _bind_events(self):"""绑定事件处理函数 - 子类可重写此方法"""self.btnLogin.configure(command=lambda: self.on_btnLogin_click(self.btnLogin))self.btnCancel.configure(command=lambda: self.on_btnCancel_click(self.btnCancel))# ==================== 事件处理存根 ====================def on_btnLogin_click(self, sender: ttk.Button):passdef on_btnCancel_click(self, sender: ttk.Button):pass2. 代码导入设计器将 Python 代码导入设计器,还原为可视化设计:• 在IDE中选中py文件,右键选择 py窗体代码转xml3. 人工微调在可视化界面中进行精确调整和优化:• 调整控件位置和大小• 修改控件属性• 添加删除控件• 调整布局4. 代码生成生成最终的 Python Tkinter UI 代码:• 选择代码格式(原生 Tkinter 或 ttkbootstrap)• 选择主题(如果使用 ttkbootstrap)• 选择生成模式(单文件或双文件)5. 业务逻辑开发回到 VS Code 或 Trae 等编辑器,AI 根据界面结构自主完成业务逻辑:# 业务逻辑代码 (用户登录.py)from 用户登录_ui import 用户登录_UIfrom ttkbootstrap.dialogs import Messageboximport ttkbootstrap as ttkclass 用户登录(用户登录_UI):""" 用户登录 主窗体类 继承自 用户登录_UI,在此实现事件处理逻辑 """def __init__(self):super().__init__()self._init_data()self.enableEvents = True # 全局事件开关def _init_data(self):"""初始化数据和状态"""passdef _on_ui_loaded(self):"""UI加载完成事件"""super()._on_ui_loaded()# 设置默认焦点到用户名输入框self.txtUsername.focus()# ==================== 事件处理 ====================def on_btnLogin_click(self, sender: ttk.Button):"""登录按钮点击事件"""if not self.enableEvents:return username = self.txtUsername.get() password = self.txtPassword.get()# 验证逻辑if not username: Messagebox.show_warning("请输入用户名", "提示")returnif not password: Messagebox.show_warning("请输入密码", "提示")returnif username == "admin" and password == "123456": Messagebox.show_info("登录成功", "提示")else: Messagebox.show_error("用户名或密码错误", "错误")def on_btnCancel_click(self, sender: ttk.Button):"""取消按钮点击事件"""if not self.enableEvents:returnself.quit()if __name__ == "__main__": app = 用户登录() app.mainloop()6. 界面迭代如需修改界面,可重新回到设计器调整并重新生成 UI 代码:• 打开设计文件• 调整界面• 重新生成 UI 代码• 业务逻辑不受影响优势1. 效率提升•AI 负责代码生成:AI 可以快速生成界面代码初稿•人工负责精确调整:开发者可以在可视化界面中进行精确调整•分工明确:AI 和人工各司其职,发挥各自优势2. 质量保证•可视化界面确保布局精确:在可视化界面中调整,确保布局精确•实时预览:可以实时预览效果,及时发现问题•撤销/重做:支持撤销/重做,方便尝试不同方案3. 逻辑保护•UI 代码与业务逻辑分离:界面修改不影响业务逻辑•可重复生成:界面修改后可重新生成 UI 代码•版本控制友好:UI 代码和业务逻辑代码可以独立版本控制4. 协作友好•支持多种开发模式:支持 AI 生成初稿、人工微调、AI 完善逻辑等多种模式•支持多种工具链:支持 VS Code、Trae 等多种编辑器•支持团队协作:UI 设计师和程序员可以分工协作5. 降低门槛•利用熟悉的 WinForm 界面:有 Windows 编程经验的开发者可以零基础上手•无需学习复杂的 Python GUI 编程:可视化操作,无需编写代码•AI 辅助:AI 可以帮助完成复杂的逻辑Python 集成•Python:Python 3.8+•Tkinter:Python 标准 GUI 库•ttkbootstrap:Tkinter 美化库数据流用户操作 → 设计器核心 → 属性更新 → 界面刷新 ↓ 设计文档保存 ↓ 代码生成器 → Python 代码 ↓ Python 解释器 → 运行快速开始1. 安装下载安装包窗体设计器属于PY880中文编程助手的一个组件官网入口:py880.cn从郑广学PYHON网盘获取最新版本的安装包:运行安装程序VSCODE或者TRAE里安装扩展即可。2. 启动启动设计器打开一个py项目文件夹 打开一个py文件 点击右下角py880顶部菜单打开如果是已经保存的xml设计文件可以直接右键xml文件打开窗体设计器界面介绍启动后会看到主界面,包含:•菜单栏:顶部菜单栏•工具栏:顶部工具栏•工具箱:左侧控件工具箱•设计区域:中间设计区域•属性面板:右侧属性面板•控件树:右侧控件树导航3. 创建第一个窗体新建窗体1. 点击菜单栏的”文件” → “新建”2. 选择窗体类型3. 点击”确定”添加控件1. 从工具箱中拖拽控件到窗体上2. 调整控件位置和大小3. 在属性面板中修改控件属性保存窗体1. 点击菜单栏的”文件” → “保存”2. 选择保存位置3. 输入文件名4. 点击”保存”4. 生成 Python 代码导出代码1. 点击菜单栏的”文件” → “导出 Python 代码”2. 选择导出格式(原生 Tkinter 或 ttkbootstrap)3. 选择生成模式(单文件或双文件)4. 选择主题(如果使用 ttkbootstrap)5. 选择输出目录6. 点击”导出”运行代码1. 打开生成的 Python 文件2. 在vscode的python项目里 运行导出的py文件即可5. 预览界面实时预览1. 点击菜单栏的”预览” → “预览界面”2. 选择预览模式(原生 Tkinter 或 ttkbootstrap)3. 选择主题(如果使用 ttkbootstrap)4. 点击”预览”6. 从代码还原设计导入代码1. 点击菜单栏的”文件” → “从代码导入”2. 选择 Python 文件3. 点击”导入”编辑设计1. 在设计器中调整界面2. 保存设计文件3. 重新生成 Python 代码7. 使用 AI 协作开发AI 生成初稿1. 使用 AI 工具生成 Python Tkinter 代码初稿2. 将代码保存到文件导入设计器1. 在 PY880 窗体设计器中打开代码文件2. 自动还原为可视化设计人工微调1. 在可视化界面中调整界面2. 调整控件属性3. 调整布局生成最终代码1. 导出 Python 代码2. 使用 AI 完成业务逻辑常见问题1. 设计和编辑Q1:如何调整控件大小?A:选中控件后,拖动控件边缘的调整手柄即可调整大小。Q2:如何对齐多个控件?A:选中多个控件后,使用工具栏的对齐工具或右键菜单中的对齐选项。Q3:如何复制控件?A:选中控件后,按 Ctrl+C 复制,然后按 Ctrl+V 粘贴。Q4:如何撤销操作?A:按 Ctrl+Z 撤销上一步操作。2. 代码生成Q5:生成的代码如何运行?A:使用 Python 解释器运行生成的 Python 文件。确保已安装 Python 3.6 或更高版本。Q6:如何使用 ttkbootstrap 主题?A:在导出代码时选择 ttkbootstrap 格式,并选择所需的主题。需要先安装 ttkbootstrap:pip install ttkbootstrapQ7:生成的代码可以修改吗?A:可以。生成的 UI 代码可以修改,但建议在 PY880 窗体设计器中修改界面,然后重新生成 UI 代码。Q8:如何实现 UI 代码和业务逻辑代码分离?A:在导出代码时选择双文件模式。UI 代码会保存到 xxx_ui.py 文件中,业务逻辑代码保存到xxx.py 文件中。4. 反向工程Q9:可以从 Python 代码还原为设计文件吗?A:选中py代码 右键菜单 py代码转xml文件即可Q10:反向工程支持哪些 Python 代码?A:支持标准的 Python Tkinter 代码和 ttkbootstrap 代码。需要以窗体继承类形式书写 具体在我课程里有教学Q11:反向工程能识别所有控件吗?A:支持识别大部分常用控件。对于自定义控件,可能需要手动调整。5. AI 协作开发Q12:如何与 AI 协作开发?A:使用 AI 工具生成 Python Tkinter 代码初稿,然后导入 PY880 窗体设计器进行可视化调整,最后生成最终代码。Q13:AI 生成的代码可以导入设计器吗?A:可以。只要代码符合 Python Tkinter 或 ttkbootstrap 的规范,就可以导入设计器。Q14:如何在 VS Code 中使用 PY880 窗体设计器?A:安装 PY880 窗体设计器的 VS Code 扩展插件,即可在 VS Code 中直接使用。6. 性能和兼容性Q15:设计器支持高分辨率屏幕吗?A:支持。设计器会自动适配不同 DPI 设置。Q16:设计器在 Windows7上运行正常吗?A:不支持winf7。设计器支持 Windows 10/11 不支持其他系统。Q17:生成的 Python 代码可以在 Linux 或 macOS 上运行吗?A:不可以 只持win10/win11 不支持国产类linux系统以及苹果系统总结PY880 窗体设计器是一款功能全面、易于使用的可视化窗体设计工具,特别针对 Python Tkinter 开发进行了优化。通过丰富的控件库、直观的操作界面、强大的编辑功能和现代化的界面布局,为开发者提供了高效的窗体设计解决方案。核心优势1.全中文界面:降低学习门槛,适合非职业程序员2.可视化设计:拖拽式设计,无需编写代码3.实时预览:即时查看效果,减少调试时间4.代码自动生成:自动生成 Python Tkinter/ttkbootstrap 代码5.UI 代码分离:UI 代码和业务逻辑代码分离,便于维护6.反向工程:支持从 Python 代码还原为设计文件7.AI 协作:支持 AI 生成初稿后人工微调的开发模式8.特色功能:一键打包进表格、表格一键均分、框架面板打包/解包等适用人群• Python 开发者• 非职业程序员• Windows 应用开发者• 产品经理• UI 设计师• 教师• 培训师应用场景• Python Tkinter 应用开发• AI 辅助开发• 企业级应用开发• 原型设计• 教学演示• 快速开发• 代码维护未来展望PY880 窗体设计器将继续完善和扩展功能:• 支持更多 Python GUI 库(如 PyQt)• 支持更多控件类型• 支持组件收藏管理•PY880窗体设计器致力于成为 Python GUI 开发的首选工具,填补 Python 生态环境中窗体设计工具的空白,让 Python GUI 开发变得简单高效。版权所有 © 2025 郑广学 py880.cn最后更新日期:2026-01-03
2026年02月01日
0 阅读
0 评论
0 点赞
2026-02-01
Python魔法文件:__init__.py全面解析
Python魔法文件: __init__.py 全面解析"在Python的世界里, __init__.py 就像哈利波特中的9¾站台——看似普通,却能带你进入神奇的魔法世界!" ♂️Python 1. 引言:为什么你需要了解 __init__.py想象一下,你正在组织一场盛大的 Python 派对。你有很多房间(目录),每个房间里都有精彩的表演(模块)。但如果没有 __init__.py 这个"派对主持人",你的客人就不知道如何找到各个房间,更糟的是,他们甚至不知道这些房间是派对的组成部分!__init__.py 是 Python 包(package)的 身份证明 和 控制中心 。它告诉 Python:"嘿!这个目录不是普通的文件夹,而是一个 Python 包!" 今天,我们就来全面解剖这个看似简单却功能强大的文件。Python 2. 什么是 __init__.py ?基础介绍 #技术分享 #掘金2.1 基本定义__init__.py 是一个特殊的 Python 文件,主要用途是:将一个目录标记为Python包在包被导入时执行初始化代码控制包的导入行为定义包的公共接口2.2 历史背景在 Python 3.3之前,__init__.py 是定义包的 必要条件 。从 Python 3.3开始,引入了"命名空间包"(Namespace Packages),没有 __init__.py 的目录也可以作为包使用。但在实际开发中,我们仍然广泛使用它,因为它提供了更多的控制能力。2.3 文件位置my_package/├── __init__.py├── module1.py├── module2.py└── subpackage/ ├── __init__.py └── module3.py3. 核心用法:不只是个空文件3.1 基础用法 - 空文件的作用最简单的 __init__.py 就是一个 空文件 ,它的存在仅仅是为了告诉 Python:"这个目录是一个包!">>> import my_package> ModuleNotFoundError: No module named my_package>>> import my_package>>> my_package> <module my_package from /path/to/my_package/__init__.py>3.2 初始化代码 - 包被导入时执行当包被导入时,__init__.py 中的代码会自动执行:print(" 欢迎来到my_package的世界!")print(" 正在初始化包...")import my_package3.3 控制导入行为 - __all__ 魔法变量__all__ 变量控制 from package import * 的行为:__all__ = [module1, helper]from my_package import *3.4 简化导入路径 - 创建包级接口在 __init__.py 中导入模块,可以简化使用者的导入路径:from .module1 import awesome_functionfrom .module2 import UsefulClassfrom my_package import awesome_function, UsefulClassPython 4. 深入原理:Python包导入机制4.1 Python如何查找包当导入一个包时,Python 解释器会:在 sys.path 列出的目录中搜索包名找到目录后,检查是否有 __init__.py 文件执行 __init__.py 中的代码创建模块对象并将其添加到 sys.modules4.2 导入顺序图解graph TDA[import my_package] --> B[查找sys.path]B --> C{找到my_package目录?}C -->|是| D[检查__init__.py]D -->|存在| E[执行__init__.py]E --> F[创建模块对象]F --> G[添加到sys.modules]C -->|否| H[ModuleNotFoundError]4.3 包与模块的关系模块(module) :单个.py文件包(package) :包含 __init__.py 的目录命名空间包(namespace package) :没有 __init__.py 的目录(Python 3.3+)5. 实战案例:构建一个完整包让我们创建一个数学工具包 math_tools ,演示 __init__.py 的实际应用:项目结构math_tools/├── __init__.py├── basic_operations.py├── advanced/│ ├── __init__.py│ └── calculus.py└── statistics.py文件内容basic_operations.py :def add(a, b):return a + bdef subtract(a, b): return a - bdef multiply(a, b): return a * bdef divide(a, b): if b == 0: raise ValueError("除数不能为零!") return a / bstatistics.py :def mean(numbers):return sum(numbers) / len(numbers)def median(numbers): sorted_numbers = sorted(numbers) n = len(sorted_numbers) mid = n // 2 if n % 2 == 0: return (sorted_numbers[mid-1] + sorted_numbers[mid]) / 2 return sorted_numbers[mid]advanced/calculus.py :def derivative(f, x, h=1e-5):"""计算函数在某点的导数"""return (f(x+h) - f(x)) / hdef integral(f, a, b, n=1000): """使用梯形法则计算定积分""" h = (b - a) / n total = (f(a) + f(b)) / 2.0 for i in range(1, n): total += f(a + i * h) return total * h核心: __init__.py 的魔法顶级包 math_tools/__init__.py :print(f"✨ 初始化math_tools包 (版本: {__version__})")__version__ = "1.0.0"from .basic_operations import add, subtract, multiply, divide from .statistics import mean, medianfrom . import advanced__all__ = [add, subtract, multiply, divide, mean, median, advanced, __version__]def info(): """显示包信息""" print(f"== math_tools {__version__} ==") print("包含基础数学运算、统计和高级计算功能")子包 math_tools/advanced/__init__.py :from .calculus import derivative, integral__all__ = [derivative, integral]使用我们的包from math_tools import add, median, infofrom math_tools.advanced import derivativeprint("5 +print("中位数:", median([1, 3, 5, 7, 9, 11]))def square(x): return x**2print("x²在 x=2处的导数:", derivative(square, 2))info()输出:✨ 初始化math_tools包 (版本: 1.0.0)5 +中位数: 6.0 x²在 x=2处的导数: 4.000000000001 == math_tools 1.0.0 == 包含基础数学运算、统计和高级计算功能6. 避坑指南:常见问题与解决方案6.1 循环导入问题问题 :当包内模块相互引用时,可能导致循环导入解决方案 :重构代码,消除循环依赖在函数内部导入(局部导入)在 __init__.py 中统一管理导入6.2 导入性能问题问题 :庞大的 __init__.py 会拖慢导入速度解决方案 :保持 __init__.py 轻量使用懒加载技术def expensive_function():from .heavy_module import computereturn compute()6.3 命名空间污染问题 :__init__.py 中导入太多内容,污染命名空间解决方案 :谨慎选择在 __init__.py 中导入的内容使用 __all__ 明确导出列表以下划线开头命名内部使用的变量/函数6.4 Python版本兼容问题 :Python 2和3中包导入机制不同解决方案 :使用绝对导入: from my_package import module使用相对导入: from . import module (Python 2.6+)避免使用隐式相对导入7. 最佳实践:专业开发者的建议7.1 保持 __init__.py 精简只包含必要的初始化代码避免业务逻辑导入数量要适度7.2 明确定义公共API__all__ = [public_function, PublicClass]_internal_variable = 427.3 版本管理__version__ = "2.3.1"7.4 文档化你的包"""math_tools 包提供各种数学计算工具:- 基础运算- 统计分析- 高级计算"""__docformat__ = "restructuredtext"7.5 子包管理策略每个子包有自己的 __init__.py顶级包导入子包: from . import subpackage子包之间避免直接交叉引用8. 面试考点及解析考点1: __init__.py 的作用是什么?参考答案 :将目录标记为Python包包初始化:当包被导入时执行其中的代码定义 __all__ 控制导入行为简化导入路径,定义包级接口存储包级别的变量和常量考点2:Python 3.3+中 __init__.py 还是必需的吗?参考答案在 Python 3.3+中,由于引入了命名空间包,没有 __init__.py 的目录也可以作为包使用。但在以下情况仍需使用:需要执行包初始化代码需要控制导入行为(如定义 __all__ )需要兼容旧版Python需要定义包级变量和函数考点3:如何处理包内的循环导入?参考答案 :重构代码,消除循环依赖将导入语句移到函数/方法内部(局部导入)在 __init__.py 中集中管理导入使用importlib动态导入将公共接口提取到单独模块考点4: __all__ 有什么作用?参考答案 :__all__ 是一个字符串列表,用于:控制 from package import * 的行为定义包的公共API接口防止内部实现细节被意外导出帮助文档工具识别公共接口9. 高级技巧:超越基础9.1 动态导入模块import importlibdef load_module(module_name): """动态加载模块""" return importlib.import_module(f".{module_name}", package=__name__)9.2 包配置系统_CONFIG = {}def configure(**settings): """配置包参数""" _CONFIG.update(settings)def get_config(key, default=None): """获取配置""" return _CONFIG.get(key, default)9.3 自动发现插件import pkgutildef discover_plugins(): """自动发现插件模块""" plugins = {} for _, name, _ in pkgutil.iter_modules(__path__): if name.startswith(plugin_): module = importlib.import_module(f"{__name__}.{name}") plugins[name] = module return pluginsPython 10. 总结: __init__.py 的精髓__init__.py 是 Python 包系统的核心枢纽,它不仅仅是包的身份证明,更是:包的门面 :定义公共接口,简化导入初始化中心 :执行包级别的设置代码导航空管 :通过 __all__ 控制导入行为信息中心 :存储包元数据和配置扩展点 :支持动态加载和插件系统记住这些黄金法则:✨ 保持 __init__.py 精简高效 明确定义包的公共接口 避免循环导入和性能陷阱 充分文档化你的包 利用其能力构建优雅的API正如 Python 之禅所说:"优美胜于丑陋,明确胜于隐晦"。__init__.py 正是这一哲学的完美体现,它让我们的包结构更加清晰、优雅和 Pythonic!"在Python的宇宙中, __init__.py 不是起点,而是通往无限可能的门户。" ✨希望这篇全面指南能帮助你掌握这个看似简单却无比强大的工具!Happy Coding!
2026年02月01日
0 阅读
0 评论
0 点赞
2026-02-01
微信每日早安问候(用微信传递爱情)Py版本
介绍使用「Python」实现的微信每日早安问候,用微信传递爱情定时推送消息给自己女朋友,可以选择在每天的5点20分为你的女朋友发送当日的天气情况、土味情话、还有纪念日……如果你有多个女朋友,还可以创建一个列表,之后循环遍历列表,为你的多个女朋友送去关怀,让你做好更好的时间管理(代码逻辑已支持)设置好你需要关怀的人的姓名、纪念日、地区等信息,剩下的交给程序就可以了!!!JAVA版本如下所示,点击直达Chris Zhang / 微信每日早安问候(用微信传递爱情)Java版本修改配置找到config.json文件,修改其中的配置app_id、app_secret 点击此处获取template_id 需要新建模板即可生成,复制粘贴下面的微信推送模板彩虹屁chp_key 点击「阅读原文」获取天气weather_key 点击「阅读原文」获取位置编码location_id 点击「阅读原文」获取location_name 女朋友所在的城市love_date 恋爱纪念日birthday 女朋友的生日配置微信推送模板点击微信测试账号可以获取到:appID、appsecret扫码关注 测试号二维码,可以获取到 微信号新增测试模板,如下复制粘贴即可{{date.DATA}}地区:{{region.DATA}}天气:{{weather.DATA}}气温:{{temp.DATA}}风向:{{wind_dir.DATA}}今天是我们恋爱的第{{love_day.DATA}}天Darling:{{note_ch.DATA}}如何运行python3 -m venv venvsource venv/bin/activatepip install -r requirements.txtpython3 push.py运行效果入骨相思知不知玲珑骰子安红豆
2026年02月01日
0 阅读
0 评论
0 点赞
2026-02-01
Python 用 pandas 快速 查找 内容 并保存为execl 文件 ---- Py 源码
从Execl 中快速提取 内容并保存的 py 源码import pandas as pdpath_load="D:\pd\数据 .xlsx" #文件存放路径path_save="D:\pd\数据se .xlsx"lie=姓名 # 所在列名字find= #查找值finds=[姓名, 雨,月月,俊俊]df= pd.read_excel(path_load)# df.loc[df[‘列名].isin([查找值1,查找值2,月,俊])]vv= df.loc[df[lie].isin(finds)]#提取 列中固定值 如 月,。...#提取 列中固定值vv.to_excel(path_save,index=None)#写入 保存 Execl 文件path_load1="D:\pd\数据 .xlsx" #文件存放路径path_save="D:\pd\数据dds .xlsx"lie=班级编号 # 所在列名字find=1017101 #查找值vc=df.loc[df[lie].isin( [find])]#写入 保存 Execl 文件vc.to_excel( path_save,index=None)#写入 保存 Execl 文件
2026年02月01日
0 阅读
0 评论
0 点赞
1
...
157
158
159
...
225