PyMe官方QQ群:100180960
随着Python在许多领域发挥着越来越重要的作用,有许多非专业的开发者朋友开始关注关学习Python来开发一些应用软件,Python的语法友好,易于学习掌握,花较少时间学习一下就能做出一些简单的工作和学习上使用的工具软件,非常有成就感。
不过在学习使用Python进行桌面应用软件开发的时候,遇到界面的部分,对于开发者就比较难受。目前主流的Python界面库主要是tkinter和PyQT,tkinter虽然学起来简单,但一直缺乏可视化界面设计器,只能手写界面代码,小项目还能忍受,稍大一点的项目就会效率低下,后面开发的越多,也越不容易维护。而PyQT虽然功能强大,也有良好的设计器,但学习起来比较复杂,对于非专业开发者来说,门槛较高,毕竟许多非专业开发者,本身不是做软件开发的科班出身,只是想快速的使用Python开发出工具软件,花在编程上的时间越少越好,真要是花两个月学习编程,等到学会,黄花菜都凉了!
那有没有什么适合非专业开发者,能够快速上手的Python应用开发工具呢?
今天给大家介绍一款国产的Python IDE工具,它的作者是知名独立软件开发者,CSDN博客专家“火云红孩儿”,从2020年起,作者就开始关注到上面说的这个问题,于是开始思考如何帮助非专业开发者更好的使用Python进行工具软件开发,如今一晃快五年了,《PyMe》逐渐从一个简陋的小设计器逐步发展成一个功能强大的IDE,得到了越来越多人的关注。
下面,我们来介绍一下《PyMe》的设计思想和功能特点。
《PyMe》 的设计借鉴了PC时代早期流行的可视化开发工具《VisualBasic》,将可视化界面设计与控件组件事件逻辑代码编写的流程紧密结合,所见即所得的操作非常方便小白快速化的制作界面并完成逻辑编写。
下面我们以一个简单的学校管理系统为作一下对比,这个系统包括以下一些界面:
(1)登录界面:主要用于输入账号和密码进行系统登录。
(2)系统界面:用于选择各功能页面项的菜单栏,以及在右边响应点击菜单项后显示各功能页面。
(3)功能界面:用于嵌入在系统界面中的各个具体功能页面。
如果我们采用tkinter进行开发,那么我们需要先手动编写代码创建一个登录窗口,在这个窗口里有两个文字标签(Label)“账号”和“密码”,两个输入框(Entry)用于接受输入文字,以及两个按钮(Button)“确定”和“退出”。
代码如下:
import tkinter as tk
from tkinter import messagebox
def login_validation():
username = entry_username.get()
password = entry_password.get()
if username == "admin" and password == "password":
messagebox.showinfo("Login Success", "Login successful!")
else:
messagebox.showerror("Login Failed", "Invalid username or password!")
def close_window():
exit()
root = tk.Tk()
root.title("Login")
root.geometry("240x120")
root.resizable(0, 0)
root.protocol("WM_DELETE_WINDOW", close_window)
label_username = tk.Label(root, text="账号:")
label_username.place(x=5,y=5,width=100,height=24)
entry_username = tk.Entry(root)
entry_username.place(x=100,y=5,width=120,height=24)
label_password = tk.Label(root, text="密码:")
label_password.place(x=5,y=35,width=100,height=24)
entry_password = tk.Entry(root, show="*")
entry_password.place(x=100,y=35,width=120,height=24)
button_login = tk.Button(root, text="确定", command=login_validation)
button_login.place(x=80,y=70,width=60,height=24)
button_exit = tk.Button(root, text="取消", command=close_window)
button_exit.place(x=150,y=70,width=60,height=24)
root.mainloop()
当然,可能有许多小伙伴会说,现在用AI做这个太简单了,分分钟就能做出来,没错,如果只是做一个登录界面,用AI来生成代码再做简单修改是可以的,但是如果你再继续往下进行“系统界面”的开发,这时AI就难以完成,因为有许多界面的细节,一方面不太好表述,另一方面即便通过语言表述给AI,AI也很难理解,比如“需要点击系统界面左边的菜单项,在右边显示相应的功能界面”。
这时如果我们用PyMe来开发,就非常简单方便了。
我们首先用浏览器打开《PyMe》官网: www.py-me.com
点击WIN64下载按钮后进入到云盘下载页面,找到最上面的压缩包后点击下载。
下载后解压缩运行PyMe.exe即可看到PyMe的主界面:
在这个界面里,展示了《PyMe》以下一些可选功能:
- 新建项目:用于创建开发项目,包括了一系列工程模板。
- 打开项目:用于显示创建好的项目,并打开一个电脑上的项目。
- 实例项目:官方案例商店,提供了近百款实用应用案例,方便学习和二次开发。
- 组件商店:官方组件商店,提供了少量的功能组件,用于提供一些单一的功能组件。
- 皮肤商店:官方皮肤商店,提供了少量的一键换肤方案,用于美化工程界面。
- 兼职接单:一些接单信息,感兴趣的开发者可以在这里查看和联系发布人。
- 视频教程:提供了PyMe的教学视频。
- 建议反馈:开发者可以在这里提供BUG反馈和使用建议,作者会回复
在“新建项目”页点击“空界面”图标,在下面的“项目路径”处选择一个位置,并修改案例名称,点击“确定”按钮,工程就创建好了。
这时会进入到项目的设计视图后,设计视图包括以下一些区域:
- 顶部窗口菜单:其中“新手入门”菜单 项下有一系列向导教程,可以方便新手学习,遇到问题还可以通过“咨询沟通”与技术专家询问沟通,非常亲切。
- 快捷按钮栏:主要是对界面中各个控件主体进行快速化的设置,比如背景色、背景图、字体、对齐等。在右边有两个按钮,分别是“运行”和“发布“,可以快速的测试项目或对项目进行一键打包成EXE。
- 组件工具条:列出了所有可创建的组件,包括了四个分类,(1)控件-界面上的一般控件(2)图表-MatplotLib图表控件(3)组件-功能组件,比如Database用于数据库处理,Socket用于网络数据收发(4)服务-PyMeSDK提供的一些服务性组件。
- 界面编辑区:用于显示当前正在编辑的界面以及所有控件。
- 界面层级树:用于展示各控件的先后顺序。
- 控件属性栏:用于编辑各控件的属性值。
- 文资资源栏:列出当前项目中的所有文件和文件夹资源。
下面我们从左边的组件工具条中拖动Label,Entry,Button到窗体Form_1中,并通过边缘的红色调整方快拖拽改变为合适大小,在顶部快捷按钮栏中为选中控件进行字体设置,很快我们将可以做出一个这样的登录界面。
我们需要输入账号和密码时点击”确定“按钮进入到系统界面MainFrame,这时我们需要在底部的文资资源栏空白处右键单击,在弹出菜单里选择”选创新窗口“,然后输入MainFrame完成创建。双击标注”WIN“的MainFrame图标进入到对应的设计视图,首先在右下角的控件属性栏设置Form_1的布局方式为打包排布,然后从左边组件工具条中拖动一个ListMenu和一个Frame到Form_1上,在选中控件时,下部的布局方式会显示出来,我们将ListMenu设置打包排布,居左停靠,竖向填充,将Frame设置居右停靠,向四周填充。
ListMenu的作用是提供一个二级的菜单列表控件,用户可以通过点击相应的标题或子项来触发事件函数进行交互处理,我们在ListMenu的空白处鼠标右键单击,可以在弹出菜单中通过"标题选项编辑“对ListMenu进行标题和子项的预设编辑。
在这个数据编辑区中,我们可以按需要对左边的各菜单项标题及子项进行修改,包括文字、图标,并将文件名设置为菜单项的值,这样在点击菜单项的时候,我们就可以通过菜单项的值来获取到点击时要跳转的界面文件名了,比如我们在文件资源栏创建了录入班级界面”AddClass“,班级列表界面”ClassList“,那么我们可以将点击”录入班级“菜单项的菜单项值”导入文件“按钮,选择AddClass.py后点击”修改保存“按钮完成设置。
完成左边ListMenu的编辑设置后,我们再点击右边的Frame,Frame的主要用途是嵌入目标界面,我们既可以在设计视图中对Frame进行嵌入界面的预设,也可以通过代码来动态的嵌入界面,可以通过右键单击或在控件属性栏中点选”导入界面“项,就可以将一个界面嵌入到Frame中。
比如选择设计好的AddClass.py,就可以看到录入班级界面被嵌入到Frame中了。
各个界面的创建和编辑方式大体相同,最重要的是要了解各个控件的特点和使用,不过在B站上作者有提供一系列的控件使用教程,看一遍基本就会了。
好,有了这些界面,下面就是通过实现具体的逻辑处理了,我们先在界面资源栏中双击College界面图标进入到登录界面。
假设我们已经有一个mysql数据库college,我们可以从左边工具条里的”组件“分栏找到”Database“拖动到Form_1上,然后在右下角属性栏中选择”数据类型“MySQL",并输入账号和密码信息后,选择数据库college。
点击”编辑数据库“后,可以在弹出的面板里看到对应数据库的所有数据表,右键在左边的树项空白处单击,可以弹出创建数据表和字段的操作,选择数据表后可以通过SQL语句进行增删查改,这样可以大大简化数据库操作了,小白也能方便的创建和管理数据库表。
好,有了数据库后,我们下面在登录界面的”确定“按钮上右键单击,在弹出菜单中选择”事件响应“,在这个对话框中,左边是所有的控件事件列表,右边是对应的操作,我们选中”Command"事件,然后在右边选择最下方的“调用数据库操作”按钮。
这时会弹出一个“调用数据库操作”的对话框,选择DataBase_1数据库组件,数据表login,然后在提交类型里选择“登录判断”,这时下方的字段名称列表中会列出表login的字段,我们选择username项,在右边当前表单输入控件中选择Entry_1点击“绑定控件"按钮,再选择"password”字段后,在右边选择"Entry_2"进行绑定,下面的设置不用修改,点击”确定“按钮,这样就可以为事件增加调用数据库的登录判断操作处理逻辑,其中输入控件代表了界面上用于提取数据的控件,对应字段的绑定过程就是确认登录判断时账号和密码字段与哪个输入控件进行对比。
点击“确定”后,会进入到代码编辑区,可以看到代码区中对应的Button_1_onCommand事件函数中增加了相应的逻辑处理代码。
代码都有中文注释,看起来也很方便,我们在Fun.MessageBox(“显示文字内容="登录成功!")这一行下面增加一行代码:
Fun.GoToUIDialog(界面名称=uiName,跳转目标界面名称='MainFrame',界面参数=None)
就可以实现登录成功时跳转到MainFrame界面了,Fun是一个PyMe自带的函数库,有许多实用的界面访问和功能函数,你可以通过鼠标右键在代码区相应位置单击,通过菜单函数来调用它们,在熟悉了之后,就可以直接输入Fun.,然后通过智能提示来快速调用相应函数了。
完成这一步后,我们可以直接在这里点击右上角”运行“按钮,这时就可以看到工程运行起来,输入账号和密码后点击”确定“按钮,如果正确就会提示。
点击”确定“然后会进到系统界面了。
刚才的测试中,密码应该使用掩码,所以我们回到College界面,选中密码输入框后,在右下角的属性栏替代符一项,选择一个喜欢的字符作为掩码。
下面我们来继续完成一下录入班级界面的逻辑处理,我们可以在College界面中,对数据库组件进行数据库编辑,在左边数据库列表处通过右键单击弹出菜单,创建班级表class,并增加字段number,name,teacher。
然后我们在下部的文件资源栏中双击“AddClass”界面图标,进入到界面设计视图,按之前的方式在”确定录入“按钮上右键单击,通过”事件响应“菜单项打开事件编辑区对话框,为Command事件”调用数据库操作“。
确认数据库组件,数据表class后,将提交类型改为“新增记录”,然后将name,number,teacher等字段与对应的界面输入控件进行绑定,点击“确定”就可以完成录入数据的处理了。
介绍到这里,我们已经能够基于界面,控件,组件,事件,代码编写等完成一些基本的界面软件开发了,后续的功能大家可以通过B站视频教程学习来一点点完成这个项目,熟练的话,完成整个系统也只需要一个小时时间就足够了。
最后,我们来打包一下这个软件,点击右上角”发布“按钮,这时如果未登录,会弹出提示让我们登录。
如果你还没有注册账号就在登录界面点击”注册新账号“来完成注册,登录后在”打开项目“页双击刚创建的项目College,即可再次进入到项目中,这一次点击”发布“按钮,就会弹出打包设置对话框,我们可以根据需要选择一下打包成目录还是文件,如果是VIP账号的话,还可以使用加密打包功能,将项目先编译成pyd再进行打包,进一步保护源码。
打包完成后,会有提示,我们可以点击”打开文件夹“,进入到项目文件夹中查看打包的exe,双击运行后,即可看到程序正常运行的结果。
我《PyMe》还有许多的功能,限于篇幅就不在这里一一进行介绍了,通过这个简单的小案例,如果我们能掌握使用PyMe进行简单的界面设计和逻辑实现,打包出可以运行的界面小工具,相信我们一定可以在Python的学习中施展更多的力量!
下面附了一些案例作品,感兴趣的开发者在“实例项目”页进行下载就可以下载,快来体验吧!。