CN110647324B - Python与Scratch交互式编程方法及电子设备 - Google Patents
Python与Scratch交互式编程方法及电子设备 Download PDFInfo
- Publication number
- CN110647324B CN110647324B CN201910879560.1A CN201910879560A CN110647324B CN 110647324 B CN110647324 B CN 110647324B CN 201910879560 A CN201910879560 A CN 201910879560A CN 110647324 B CN110647324 B CN 110647324B
- Authority
- CN
- China
- Prior art keywords
- python
- editor
- kernel
- scratch
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了Python与Scratch交互式编程的电子设备,包括:Scratch软件、Python插件、Web Python编辑器和Python服务端。本发明中,该Python与Scratch交互式编程方法及电子设备使得用户可以在线使用Python强大的第三方库,和Scratch进行交互,确保Python本地服务端保留Python所有强大的功能和特性,同时Scratch内嵌Python编辑器的方式极大的降低了用户学习Python的入门门槛,还激发了用户使用Scratch与Python创作的兴趣。
Description
技术领域
本发明涉及教学平台技术领域,尤其涉及Python与Scratch交互式编程方法及电子设备。
背景技术
Python是一种跨平台的计算机程序设计语言,是一种面向对象的动态类型语言,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发,Scratch一款开发用的图形化编程工具,主要面对青少年开放,而Python教学平台也正在市面不断的普及之中。
现有Python教学平台中,由于Python属于后端语言,没有动画没有交互特效,对于小学生入门门槛太高且枯燥,所以目前大部分公司使用javascript来模拟Python语法和功能,用类似Scratch的积木来与Python代码进行转化,这样在浏览器上轻松实现各种交互效果,但是这种技术方案存在很大缺陷,其牺牲了Python很多功能和特性,例如无法安装第三方库,并且许多Python代码无法通过积木进行转化,由于受限于浏览器的限制,无法访问本地文件,同时许多交互效果用javascript封装成类似Python的语法,不是真实的Python代码,脱离了特定软件就无法使用,从而限制了孩子后面的技能发展。
发明内容
本发明的目的是为了解决现有技术中存在的缺点,而提出的Python与Scratch交互式编程方法及电子设备。
为了实现上述目的,本发明采用了如下技术方案:Python与Scratch交互式编程的电子设备,包括:Scratch软件、Python插件、Web Python编辑器和Python服务端;
所述Web Python编辑器嵌入到Scratch软件中,实现Python与Scratch交互式的连接;
所述Web Python编辑器编辑的代码发送到Python服务端执行,执行结果返回到Web Python编辑器中显示;
所述Python插件用于获取Web Python编辑器中显示的执行结果,并与Scratch软件进行互动交流。
作为上述技术方案的进一步描述:
所述Web Python编辑器由Python容器、PythonEditor组件和CodeMirror编辑器组件组成;
所述CodeMirror是一个代码编辑器,将其封装为一个React组件;
所述PythonEditor组件用于专门负责与Python服务端通讯和返回执行结果的处理;
所述Python容器是一个React容器,用于负责将PythonEditor组件嵌入到scratch软件中。
作为上述技术方案的进一步描述:
所述Python服务端由ZMQ库、两对发布器与订阅器、内核管理器和两个内核代理对象组成;
两对所述发布器与订阅器中,其中一对所述发布器与订阅器用来订阅和发布内核代理对象的消息,另一对所述发布器与订阅器用来订阅和发布python kernel的消息,其中订阅器是用来订阅消息队列中的消息,发布器是用来向消息队列发送消息的。
Python与Scratch交互式编程方法,包括以下步骤:
S01:打开Scratch软件;
S02:在Python编辑器中编写代码;
S03:打开本地Python服务端软件;
S04:Python编辑器通过http与服务端建立连接,启动python kernel;
S05:Python编辑器通过websocket与python kernel通讯,发送Python代码;
S06:Python编辑器处理返回的结果;
S07:加载Python插件;
S08:Python插件获取返回的结果。
作为上述技术方案的进一步描述:
所述步骤S04-S06中,Python编辑器与Python服务端的通讯流程包括以下步骤:
SS01:Python编辑器通过http发送请求到服务端,启动kernel;
SS02:建立websocket通道用以发送代码;
SS03:获取Python编辑器中的代码并通过websocket通道发生代码到pythonkernel;
SS04:python kernel执行代码并返回json数据;
SS05:Python编辑器监听websocket通道返回的json数据并解析数据;
SS06:用户根据需要增减Python编辑器的数量,每个Python编辑器待执行的代码互不影响。
作为上述技术方案的进一步描述:
所述kernel若没有启动成功,则会提示用户重新通过http发送请求到服务端,再次启动kernel;
所述websocket通道若建立失败,则会提示用户重新建立websocket通道;
所述json数据若包含用户主动中断kernel的信息,则忽略,若不包含,则正常显示。
作为上述技术方案的进一步描述:
所述步骤S03中,每当一个websocket建立时,就会创建一个内核代理对象实例,每个内核代理对象实例有一个订阅器和一个发布器。
作为上述技术方案的进一步描述:
所述步骤S03中,内核管理器也有一个订阅器和一个发布器,通过订阅器订阅到了来自ZMQ库的消息,消息中包含Python代码,ipython执行代码,然后通过发布器将执行结果发布给ZMQ库,ZMQ库再通过自身的发布器将执行结果发布给内核代理对象,内核代理对象通过websocket返回给前端。
作为上述技术方案的进一步描述:
所述步骤S05中,因为Python服务端程序中内置了pip软件,该软件可以下载安装第三方Python库,所以用户只需要在Python编辑器中编写“!python–m pip install库名”,然后发送到服务端执行即可,同时,由于Python代码运行在本地服务端,可以直接操作本地文件,摆脱了浏览器的限制。
作为上述技术方案的进一步描述:
所述步骤S07-S08中,当Python插件接收到Python编辑器编辑的代码时,Python服务端会执行代码;
当Python插件接收到代码的执行结果时,则停止内核代理对象的运行。
有益效果
本发明提供了Python与Scratch交互式编程方法及电子设备。具备以下有益效果:
(1):该Python与Scratch交互式编程方法及电子设备使得用户可以在线使用Python强大的第三方库,例如数据爬虫,人脸识别等,而这些功能可以和Scratch进行交互,能够保证Python本地服务端保留Python所有强大的功能和特性,同时Scratch内嵌Python编辑器的方式极大的降低了用户学习Python的入门门槛,还激发了用户使用Scratch与Python创作的兴趣。
(2):该Python与Scratch交互式编程方法及电子设备由于Python代码运行在本地服务端,可以直接操作本地文件,避免了Python代码无法通过积木进行全面真实转化的问题,从而摆脱了浏览器的使用限制。
附图说明
图1为本发明提出的Python与Scratch交互式编程的电子设备的基本架构示意图;
图2为本发明提出的Python与Scratch交互式编程的电子设备中Python编辑器的结构示意图;
图3为本发明提出的Python与Scratch交互式编程方法中的Python编辑器与Python服务端的通讯流程示意图;
图4为本发明提出的Python与Scratch交互式编程的电子设备中Python服务端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
如图1-图4所示,Python与Scratch交互式编程的电子设备,包括:Scratch软件、Python插件、Web Python编辑器和Python服务端;
Web Python编辑器嵌入到Scratch软件中,实现Python与Scratch交互式的连接;
Web Python编辑器编辑的代码发送到Python服务端执行,执行结果返回到WebPython编辑器中显示;
Python插件用于获取Web Python编辑器中显示的执行结果,并与Scratch软件进行互动交流。
上述Python插件和Web Python编辑嵌入到Scratch软件中,Python服务端是一个exe可执行文件,用户双击即可运行,四者之间相互通讯。
Web Python编辑器由Python容器、PythonEditor组件和CodeMirror编辑器组件组成;
CodeMirror是一个代码编辑器,将其封装为一个React组件;
PythonEditor组件用于专门负责与Python服务端通讯和返回执行结果的处理;
Python容器是一个React容器,用于负责将PythonEditor组件嵌入到scratch软件中。
Python服务端由ZMQ库、两对发布器与订阅器、内核管理器和两个内核代理对象组成;
两对发布器与订阅器中,其中一对发布器与订阅器用来订阅和发布内核代理对象的消息,另一对发布器与订阅器用来订阅和发布python kernel的消息,其中订阅器是用来订阅消息队列中的消息,发布器是用来向消息队列发送消息的。
Python与Scratch交互式编程方法,包括以下步骤:
S01:打开Scratch软件;
S02:在Python编辑器中编写代码;
S03:打开本地Python服务端软件;
S04:Python编辑器通过http与服务端建立连接,启动python kernel;
S05:Python编辑器通过websocket与python kernel通讯,发送Python代码;
S06:Python编辑器处理返回的结果;
S07:加载Python插件;
S08:Python插件获取返回的结果。
步骤S04-S06中,Python编辑器与Python服务端的通讯流程包括以下步骤:
SS01:Python编辑器通过http发送请求到服务端,启动kernel;
SS02:建立websocket通道用以发送代码;
SS03:获取Python编辑器中的代码并通过websocket通道发生代码到pythonkernel;
SS04:python kernel执行代码并返回json数据;
SS05:Python编辑器监听websocket通道返回的json数据并解析数据;
SS06:用户根据需要增减Python编辑器的数量,每个Python编辑器待执行的代码互不影响。
kernel若没有启动成功,则会提示用户重新通过http发送请求到服务端,再次启动kernel;
websocket通道若建立失败,则会提示用户重新建立websocket通道;
json数据若包含用户主动中断kernel的信息,则忽略,若不包含,则正常显示。
步骤S03中,每当一个websocket建立时,就会创建一个内核代理对象实例,每个内核代理对象实例有一个订阅器和一个发布器;
kernel使用的是开源软件ipython,ipython是Python的交互式shell,可以与Python服务端进行交互,保证学生每一行真实的Python代码都可以正常运行;
内核管理器管理多个内核代理对象,kernel与kernel之间运行的代码互不影响,从而实现Python编辑器待执行的代码互不影响;
步骤S03中,内核管理器也有一个订阅器和一个发布器,通过订阅器订阅到了来自ZMQ库的消息,消息中包含Python代码,ipython执行代码,然后通过发布器将执行结果发布给ZMQ库,ZMQ库再通过自身的发布器将执行结果发布给内核代理对象,内核代理对象通过websocket返回给前端;
使用pynsist库把ipyhon的二进制文件,Python服务端相关程序,以及相关的其他资源文件压缩并打包成windows可执行文件;
使用Python的subprocess命令和PyQt5的QIcon组件实现用户双击软件快捷方式时,自动运行Python服务端,并且通过任务栏图标控制服务的运行状态的功能。
步骤S05中,因为Python服务端程序中内置了pip软件,该软件可以下载安装第三方Python库,所以用户只需要在Python编辑器中编写“!python–m pip install库名”,然后发送到服务端执行即可,同时,由于Python代码运行在本地服务端,可以直接操作本地文件,摆脱了浏览器的限制。
步骤S07-S08中,当Python插件接收到Python编辑器编辑的代码时,Python服务端会执行代码;
当Python插件接收到代码的执行结果时,则停止内核代理对象的运行。
在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (8)
1.Python与Scratch交互式编程的电子设备,其特征在于,包括:Scratch软件、Python插件、Web Python编辑器和Python服务端;
所述Web Python编辑器嵌入到Scratch软件中,实现Python与Scratch交互式的连接;
所述Web Python编辑器编辑的代码发送到Python服务端执行,执行结果返回到WebPython编辑器中显示;
所述Python插件用于获取Web Python编辑器中显示的执行结果,并与Scratch软件进行互动交流;
所述Python服务端由ZMQ库、两对发布器与订阅器、内核管理器和两个内核代理对象组成;
两对所述发布器与订阅器中,其中一对所述发布器与订阅器用来订阅和发布内核代理对象的消息,另一对所述发布器与订阅器用来订阅和发布python kernel的消息,其中订阅器是用来订阅消息队列中的消息,发布器是用来向消息队列发送消息的。
2.根据权利要求1所述的Python与Scratch交互式编程的电子设备,其特征在于,所述Web Python编辑器由Python容器、PythonEditor组件和CodeMirror编辑器组件组成;
所述CodeMirror是一个代码编辑器,将其封装为一个React组件;
所述PythonEditor组件用于专门负责与Python服务端通讯和返回执行结果的处理;
所述Python容器是一个React容器,用于负责将PythonEditor组件嵌入到scratch软件中。
3.Python与Scratch交互式编程方法,其特征在于,包括以下步骤:
S01:打开Scratch软件;
S02:在Python编辑器中编写代码;
S03:打开本地Python服务端软件;
S04:Python编辑器通过http与服务端建立连接,启动python kernel;
S05:Python编辑器通过websocket与python kernel通讯,发送Python代码;
S06:Python编辑器处理返回的结果;
S07:加载Python插件;
S08:Python插件获取返回的结果;
所述步骤S04-S06中,Python编辑器与Python服务端的通讯流程包括以下步骤:
SS01: Python编辑器通过http发送请求到服务端,启动kernel;
SS02:建立websocket通道用以发送代码;
SS03:获取Python编辑器中的代码并通过websocket通道发生代码到python kernel;
SS04:python kernel执行代码并返回json数据;
SS05: Python编辑器监听websocket通道返回的json数据并解析数据;
SS06:用户根据需要增减Python编辑器的数量,每个Python编辑器待执行的代码互不影响。
4.根据权利要求3所述的Python与Scratch交互式编程方法,其特征在于,所述kernel若没有启动成功,则会提示用户重新通过http发送请求到服务端,再次启动kernel;
所述websocket通道若建立失败,则会提示用户重新建立websocket通道;
所述json数据若包含用户主动中断kernel的信息,则忽略,若不包含,则正常显示。
5.根据权利要求3所述的Python与Scratch交互式编程方法,其特征在于,所述步骤S03中,每当一个websocket建立时,就会创建一个内核代理对象实例,每个内核代理对象实例有一个订阅器和一个发布器。
6.根据权利要求3所述的Python与Scratch交互式编程方法,其特征在于,所述步骤S03中,内核管理器也有一个订阅器和一个发布器,通过订阅器订阅到了来自ZMQ库的消息,消息中包含Python代码,ipython执行代码,然后通过发布器将执行结果发布给ZMQ库,ZMQ库再通过自身的发布器将执行结果发布给内核代理对象,内核代理对象通过websocket返回给前端。
7.根据权利要求3所述的Python与Scratch交互式编程方法,其特征在于,所述步骤S05中,因为Python服务端程序中内置了pip软件,该软件可以下载安装第三方Python库,所以用户只需要在Python编辑器中编写“!python –m pip install 库名”,然后发送到服务端执行即可,同时,由于Python代码运行在本地服务端,可以直接操作本地文件,摆脱了浏览器的限制。
8.根据权利要求3所述的Python与Scratch交互式编程方法,其特征在于,所述步骤S07-S08中,当Python插件接收到Python编辑器编辑的代码时,Python服务端会执行代码;
当Python插件接收到代码的执行结果时,则停止内核代理对象的运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910879560.1A CN110647324B (zh) | 2019-09-18 | 2019-09-18 | Python与Scratch交互式编程方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910879560.1A CN110647324B (zh) | 2019-09-18 | 2019-09-18 | Python与Scratch交互式编程方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110647324A CN110647324A (zh) | 2020-01-03 |
CN110647324B true CN110647324B (zh) | 2023-05-16 |
Family
ID=69010712
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910879560.1A Active CN110647324B (zh) | 2019-09-18 | 2019-09-18 | Python与Scratch交互式编程方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110647324B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857693B (zh) * | 2020-05-29 | 2023-12-26 | 北京编程猫科技有限公司 | 一种基于图像化编程的调用第三方函数的方法及装置 |
CN111696408B (zh) * | 2020-06-22 | 2022-04-15 | 小狮互联(杭州)科技有限公司 | 一种实现空间编程的适配方法、装置及编程系统 |
CN111538495B (zh) * | 2020-07-13 | 2020-10-23 | 深圳开源互联网安全技术有限公司 | 识别项目中引用Python开源组件的方法及系统、设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523225A (zh) * | 2011-12-22 | 2012-06-27 | 浙江国自机器人技术有限公司 | 分布式松耦合构架中的解耦方法及分布式松耦合构架平台 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7975233B2 (en) * | 2006-07-24 | 2011-07-05 | National Instruments Corporation | Automatic conversion of a textual language into a graphical program representation |
KR102092721B1 (ko) * | 2016-03-23 | 2020-04-23 | 포그혼 시스템스 인코포레이티드 | 실시간 데이터플로우 프로그래밍에서 패턴 구동형 반응의 구성 |
CN106843873A (zh) * | 2017-01-18 | 2017-06-13 | 深圳市编玩边学教育科技有限公司 | 一种远程游戏编程系统 |
CN109471622A (zh) * | 2018-11-02 | 2019-03-15 | 成都娄外科技有限公司 | 一种程序编辑方法和装置 |
CN109739488A (zh) * | 2018-12-29 | 2019-05-10 | 深圳点猫科技有限公司 | 调用第三方库执行python代码的方法以及电子设备 |
CN110134386B (zh) * | 2019-04-04 | 2023-04-18 | 成都娄外科技有限公司 | 一种程序编辑方法和装置 |
-
2019
- 2019-09-18 CN CN201910879560.1A patent/CN110647324B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523225A (zh) * | 2011-12-22 | 2012-06-27 | 浙江国自机器人技术有限公司 | 分布式松耦合构架中的解耦方法及分布式松耦合构架平台 |
Also Published As
Publication number | Publication date |
---|---|
CN110647324A (zh) | 2020-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110647324B (zh) | Python与Scratch交互式编程方法及电子设备 | |
US7636893B2 (en) | Client server approach for interactive updates of graphical user interfaces on intranets | |
RU2317582C2 (ru) | Система и способ интерфейса динамического мастера | |
CN116663569A (zh) | 构建特定于状态的多轮上下文语言理解系统的系统和方法 | |
CN104636139A (zh) | 一种可视化跨平台移动应用开发与生成系统 | |
US6438619B1 (en) | Operating system based remote communication system | |
CN105955731B (zh) | 一种手机游戏快速编写方法和系统 | |
KR102224785B1 (ko) | 모바일에서 연동 가능한 코딩 교육 서비스 제공 방법 및 장치 | |
CN111158690A (zh) | 桌面应用框架、构建方法、桌面应用运行方法及存储介质 | |
CN103513858A (zh) | 远程协助方法及装置 | |
CN108038241A (zh) | 集成web可视化工作流方法、装置、可读存储介质及系统 | |
US9198009B2 (en) | System and method for providing end to end interactive mobile applications using SMS | |
CN112988267A (zh) | 加载方法、装置、存储介质及电子设备 | |
CN109669691B (zh) | 基于嵌入式Linux音频播放器的平台通用控制方法及系统 | |
CN103428658A (zh) | 一种短信系统以及基于该短信系统的智能动态会话场景的实现方法 | |
CN112988588B (zh) | 客户端软件调试方法、装置、存储介质及电子设备 | |
US8132124B2 (en) | Method and system for representing Web service activity through a user interface | |
Bryksin et al. | Ubiq Mobile+ QReal a Technology for Development of Distributed Mobile Services | |
CN114259734A (zh) | 游戏试玩方法和装置、计算机可读存储介质、电子设备 | |
CN113765862B (zh) | 游戏协议测试的方法、装置、设备及计算机可读存储介质 | |
CN112597022A (zh) | 远程诊断方法、装置、存储介质及电子设备 | |
CN116389801B (zh) | 一种多端一体的云串流客户端实现方法 | |
CN113595869B (zh) | 语音播放方法和装置、存储介质及电子装置 | |
CN117234935B (zh) | 基于虚幻引擎的测试方法、装置、电子设备及存储介质 | |
CN111870937B (zh) | 一种数据处理方法、模拟服务器及时效性应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20230406 Address after: Room 644, Xixi Jinzuo, Wuchang Street, Yuhang District, Hangzhou City, Zhejiang Province, 311100 Applicant after: Bianyuan (Hangzhou) Education Technology Co.,Ltd. Address before: Room 09, 15th Floor, Building 1, No. 77 Xueyuan Road, Xihu District, Hangzhou City, Zhejiang Province, 310000 Applicant before: Qima (Hangzhou) Education Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |