易语言与python的一点想法">关于易语言与Python的一点想法

小香蕉 2019年7月11日

说在前面

最近吃饭的时候总是会想很多关于易语言的事情。易语言是我学会的第一门语言,虽然它被喷的很惨很惨,具体可见:易语言 知乎。但是由于它极高的上手性,还是成为我高中时期最喜欢的编程工具。(当时我还没听说过Python)易语言画界面是非常简单的,用鼠标拖动一下组件,简简单单的几句代码就可以写一个简单的GUI程序。我想,在界面化的程序上,除了Web程序上用Javascript和CSS画界面。对于我这样懒惰的人,易语言无非是一个比较好的选择。Python,熟悉易语言的我在刚学Python时极度不适应,但是在学习了一段时间之后,我就改变了我的想法,Python真的太舒服了...

不说得太远了,先说下我最近的想法(疑问):

易语言能和Python结合起来吗?

结合的方式应该是怎样的?

结合起来有什么用?

在自问自答上面的问题之前,先来看一看易语言与Python有什么不同点:

易语言与Python的不同

先来看看易语言与Python编程环境的不同:

易语言:

易语言这个弹出输入的内容,我只写了一行代码,其他的只是组件的大小和位置,这些易语言都已经安排好了,只需要添加参数即可。

那用Python写一个这样的弹出输入框的程序需要多少行代码呢?

Python:

GUI编程上手并不容易,可以参考以下两篇:

可见Python直接写界面,比起语言还是要多很多代码量的。(而且环境配置要踩很多坑)我比较烦的也就是这一点,每一个参数都得有一行代码的话,实在太麻烦了。(其实就是懒得学?)

当然,易语言除了界面以外和Python相比起来有很多的缺点,而Python做界面比较麻烦,却在其他方面比易语言稳定高效。这也是我想总结易语言与Python结合方式的一个原因。那有没有方式把这两部分结合起来,比如用易语言做界面部分,Python做功能部分又会怎么样呢?

回到上面的问题。

易语言能和Python结合起来吗?

可以!

结合的方式应该是怎样的?

1. 直接用DOS调用取运行结果

需要用到精易模块->系统_取DOS运行结果()

系统_取DOS执行结果 (“python ” + 取运行目录 () + “\test.py”)

test.py中的内容:

print("Hello World.")

运行会返回执行的结果。之后在易语言当中对结果进行下一步的操作。

如图:

这种方式是最直接的也是最简单的,在一些简单的命令输入,单一内容返回的脚本中比较适用。

参考:

2. 直接在易语言当中执行Python语句

感谢师傅们的分享,前者还直接将功能写成了模块来简化调用。

我觉得直接调用Python的API这个方式蛮有意思的,但是又比较鸡肋。

我尝试了简单的python语句,如简单的循环之类的,可以正常执行并返回结果,但我使用稍微复杂一点的命令如requests获取网页源码,就直接不返回内容了。

简单的命令在易语言当中就能做到,又为何用到python呢。 所以这个也只能作为易语言和Python结合的一种方式吧。个人认为实用性太低了。

例子:

参考:

3. Python调用易语言的函数

由于这个方法需要32位的Python,环境搭建比较麻烦就不演示了。

我还没想到什么样的脚本需要用Python调用易语言的dll,暂且留着把。

4. 为什么一定要互相调用呢?

在看了前面几种方式之后,我还是觉得不是很方便。为什么一定要互相调用呢?

我想到了一种形式,就是用数据库做为“中间件”,易语言和Python都单独运行。

一个简单的程序逻辑如下:

易语言提供操作界面,将任务插入到数据库中的任务列表里。Python脚本取数据库内的任务列表逐一执行,将执行的结果插入到结果列表里,易语言读取结果列表,将结果展示。

就用批量获取网页状态工具作为一个简单的例子:

用易语言做的界面如下图所示:

源码部分:

数据库结构:

Python脚本:

import pymysql, requests, base64, time

# 设置数据库

mysql_host = "127.0.0.1"

mysql_user = "root"

mysql_passwd = "*"

mysql_db = "html"

mysql_table = "task"

def run_tasks():

conn = pymysql.connect(host=mysql_host, user=mysql_user, passwd=mysql_passwd, db=mysql_db)

cur = conn.cursor()

cur.execute("SELECT id,link,html FROM " + mysql_table)

links = cur.fetchall()

for link in links:

if link[2] == "":

try:

html_raw = requests.get(link[1])

html_statu = html_raw.status_code

except Exception as e:

print(e)

html_statu = "error"

cur.execute("UPDATE `html`.`task` SET `html` = '{0}' WHERE `id` = {1};".format(html_statu, link[0]))

print(link[1] + " update success")

while True:

time.sleep(10)

run_tasks()

运行过程:

运行Python脚本,保存脚本运行

输入网址添加到数据库的任务序列

Python脚本读取任务序列并获取网页状态

刷新获取结果

那这样做的好处就是:不用再考虑易语言如何调用Python,而是各自单独运行,只需要操作数据库就行了。

暂时想到的几个缺点:

无法做到瞬时反应,都需要通过sleep,时钟来控制任务的执行和结果显示

易语言支持的数据库太少,本想用Mongodb来做例子的,发现易语言的mongodb库实在是...麻烦。

当程序庞大起来,易语言-数据库-Python的逻辑也会非常复杂

只是作为一个简单的例子,可以按照这样的逻辑满足更复杂的项目需求。

写完这个例子之后发现,这种结合应该适用于任何语言。或者说这个不能称作结合,只能叫做各自完成任务罢了。不过这也能算得上易语言与其他语言的一种合作方式了?如果达到这点也就差不多了。

结合起来有什么用?

就如前面所说,易语言开发界面简单方便,Python实现功能点更加高效稳定。两者结合起来,岂不美哉?

最后

写的不是很好,很多内容都没有往深里探究,没这么多的心思,也没那个水平。暂且把其看作是我胡思乱想的出来的结论吧。

另外,如果师傅们有更好的方式能够使易语言的优势发挥出来,还请师傅不吝赐教。 我的邮箱 makefoxm@qq.com

易语言和python混合编程_关于易语言与Python的一点想法相关推荐

  1. 易语言和python混合编程_[我叫以赏]Python制作交互式的服务器与客户端互相通讯(引用SOCKET模块)...

    前言 欢迎来到我的教程啊,我是以赏,这么说吧,Python我也在学习并未达到"精通"的地步,一部分呢是自学,一部分是老师"传授"的.但我认为学习Python应该 ...

  2. java和python混合编程_浅谈C++与Java混合编程

    在学习编程的过程中, 我觉得不止要获得课本的知识, 更多的是通过学习技术知识提高解决问题的能力, 这样我们才能走在最前方, 更 多 Java 学习,请登陆疯狂 java 官网. 现实的情况是, 真实的 ...

  3. 易语言和python混合编程_易语言python交互源码,不需要把易语言编译成静态库

    .版本 2 .支持库 spec .子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行 .局部变量 mothod, PyMethodDef .局部变量 创建结果, 整数型 .局部变量 错 ...

  4. python java混合编程_详解java调用python的几种用法(看这篇就够了)

    java调用python的几种用法如下: 在java类中直接执行python语句 在java类中直接调用本地python脚本 使用Runtime.getRuntime()执行python脚本文件(推荐 ...

  5. python windows编程_在Windows下配置Python编程学习环境

    一.需求: 之前是在Linux环境下进行Python的学习,每次开虚拟机觉得有点麻烦,希望可以直接在Windows的dos命令行下进行Python编程学习. 二.安装软件 直接从官网下载这两个软件安装 ...

  6. python模块化编程_什么是模块,Python模块化编程(入门必读)

    Python 提供了强大的模块支持,主要体现在,不仅 Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块.通过这些强大的模块可以极大地提高开发 ...

  7. python硬件编程_树莓派c语言 设置并使用树莓派进行Python和C语言编程 - 硬件设备 - 服务器之家...

    树莓派c语言 设置并使用树莓派进行Python和C语言编程 发布时间:2017-03-01 来源:服务器之家 设置并使用树莓派进行Python和C语言编程 (下) Python部落组织翻译, 禁止转载 ...

  8. python除法编程_跟老齐学Python之啰嗦的除法

    除法啰嗦的,不仅是python. 整数除以整数 看官请在启动idle之后,练习下面的运算: >>> 2/5 0 >>> 2.0/5 0.4 >>> ...

  9. python 文字冒险游戏_用木兰语言重写 Python 文字冒险游戏(九到十一章)

    续前文,继续到第十一章,期间根据须要对些许木兰语言功能进行了重现,并发布了木兰版本 0.0.15.1 .游戏例程代码已经开源在 gitee,第十一章运行效果以下,欢迎提 issue.javascrip ...

最新文章

  1. 《淘宝店铺经营管理一册通》一一1.3 页面中的图片应用
  2. 【mybatis】IF判断的坑 (实现if test= status == 'zhangsan')
  3. 调试笔记--jlink 变量转实时波形小技巧
  4. TensorFlow模型实现:UNet模型
  5. 关于HotSpot VM以及Java语言的动态编译 你可能想知道这些
  6. python工厂模式 简书_[Python设计模式] 01 - 简单工厂模式
  7. JavaScript实现动态添加、移除元素或属性的方法分析
  8. 松下plc编程线usb驱动
  9. 计算机职业道德核心价值观,信息技术学科的核心价值观再认识
  10. 猪猪猫Windows7 X86旗舰中文装机版V0911
  11. 实现京东首页的轮播广告效果,包含三个以上产品广告
  12. Apple MFi认证是什么意思?
  13. 4月9日京东考试感想
  14. 推荐一些学习嵌入式经典的书籍
  15. 无盘服务器 安装客户机程序,顺网云服务端和客户端安装
  16. 鼠标悬停帮助图标显示文字提示框代码
  17. 加密市场中的14个心智模型
  18. “喜茶Go”微信小程序新零售商业实战案例经验分享-概述
  19. 如何使用 Director 编写“拼图游戏”
  20. 如果把微信和支付宝比作钱包,那么数字人民币对应的是钱包中的内容

热门文章

  1. 对话驴评网CEO崔继蓉:在线旅游的前途在移动端
  2. 300iq Contest 1
  3. Beyond compare官方中文版下载
  4. 【CF718E】Matvey's Birthday BFS+动态规划
  5. 使用Fiddler对手机APP抓包渗透测试实战
  6. 钟汉良日记:你知道吗?写日记可以影响三代人!
  7. 水利专业学计算机吗,大学哪些专业最易被误解?计算机专业居榜首,水利学生气到不行!...
  8. 【cocos creator 3.x】精灵图片不显示
  9. task_struct结构
  10. 元宇宙的特征 —— 社交网络