返回顶部
首页 > 资讯 > 后端开发 > Python >Python For Delphi---
  • 546
分享到

Python For Delphi---

PythonDelphi 2023-01-31 02:01:16 546人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

先上相关资源的下载吧: python4delphi: 主页: Http://code.Google.com/p/Python4delphi/ 下载: svn checkout http://python4delphi.googlecode.

先上相关资源的下载吧:

python4delphi:

主页:

Http://code.Google.com/p/Python4delphi/

下载:

svn checkout http://python4delphi.googlecode.com/svn/trunk/ python4delphi-read-only

现在已支持到XE2.

必看(作者):

http://www.atug.com/andypatterns/pythonDelphiTalk.htm

下面要示范的就是在XE2下完成.其实源码检出后,里面有30多个示例,几乎涵盖了Python4Delphi的所有方面.好吧,我们下面做个简单的加法计算器,主要是演示二者之间的参数传递.

当然,需要在Delphi中先安装上PythonForDelphi控件包,安装不麻烦,可参考上述资料的说明文档.

在XE2中新建一个工程,然后在窗口中依次放上一个TPythonEngine,三个TPythonDelphiVar,TPythonDelphiVar的VarName分别设置为Num1,Num2,Result.再放上三个LabelEdit,分别命名为edtNum1,edtNum2,edtResult.

上代码:

unit FfrmMain;

interface

uses
  Winapi.windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.FORMs, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, RzPanel,
  PythonEngine, PythonGUIInputOutput, RzButton;

type
  TfrmMain = class(TForm)
    memInput: TMemo;
    Splitter1: TSplitter;
    memOutput: TMemo;
    RzPanel1: TRzPanel;
    pyEngine: TPythonEngine;
    PythonGUIInputOutput1: TPythonGUIInputOutput;
    btnExcute: TRzBitBtn;
    PythonDelphiVar1: TPythonDelphiVar;
    PythonDelphiVar2: TPythonDelphiVar;
    edtNum1: TLabeledEdit;
    edtNum2: TLabeledEdit;
    edtResult: TLabeledEdit;
    PythonDelphiVar3: TPythonDelphiVar;
    procedure btnExcuteClick(Sender: TObject);
    procedure PythonDelphiVar1GetData(Sender: TObject; var Data: Variant);
    procedure PythonDelphiVar2GetData(Sender: TObject; var Data: Variant);
    procedure PythonDelphiVar3SetData(Sender: TObject; Data: Variant);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.btnExcuteClick(Sender: TObject);
begin
  pyEngine.ExecStrings(memInput.Lines);
end;

procedure TfrmMain.PythonDelphiVar1GetData(Sender: TObject; var Data: Variant);
begin
  Data:=edtNum1.Text;
end;

procedure TfrmMain.PythonDelphiVar2GetData(Sender: TObject; var Data: Variant);
begin
  Data:=edtNum2.Text;
end;

procedure TfrmMain.PythonDelphiVar3SetData(Sender: TObject; Data: Variant);
begin
  edtResult.Text:=Data;
end;

end.

上面窗体中还放了两个memo和一个TPythonGUIInputOutput,这些可以不用.

然后在memInput中输入Python代码:

Result.Value=int(Num1.Value)+int(Num2.Value)

在执行按钮中填加代码:

pyEngine.ExecStrings(memInput.Lines);

当然,可以直接执行上面的Python代码.

在edtNum1中输入一个数字,在edtNum2中输入一个数字,点击按钮,执行python脚本后就可以在edtResult中返回计算结果.

注意:

Result.Value=int(Num1.Value)+int(Num2.Value)

TPythonDelphiVar传人的是字符类型,所以要转换为int后再相加,否则是字符串相加.

这样,我们就完成了Delphi传递参数到Python,Python执行完毕后将结果再返回给Delphi的演示.好了,我们可以好好利用Python,将它很好地嵌入到Delphi中了.

如果要传递更复杂的参数怎么办?我想,或许可以将要传递的参数JSON化,然后将jsON作为参数在二者之间相互传递,这样可以完成更复杂的功能.

附上Python JSON文档:

http://docs.python.org/2/library/json.html

Delphi JSON之SuperObj:

http://www.progdigy.com/?page_id=6

http://code.google.com/p/superobject/

Delphi通过PythonForDelphi变量来和Python交换数据可以,有没有别的办法了呢?有,可以像COM一样来调用Python模块的变量和函数,这看起来好像能更酷一些 :-)

感谢samson,是他的一篇文章使我学习到了这个方法,并且很热心地给予了指教!

废话少说,先上Python代码(hello.py,放到程序目录下):

strPython='Hello,This is a python string !'
dicPython={'StringInfo':'Hello,This is a python string !'}
lstPython=list('Hello,This is a python string !')

def SayHello(s):
    return 'Hello,'+s

上面是简单的示例,有变量和函数,我们看看在Delphi中怎样来调用.
在Delphi中写下面的代码:

var
  PyModule: variant;
....

  PyModule := Import('hello');
  //测试Python变量传递
  Memo1.Lines.Add(PyModule.strPython);
  Memo1.Lines.Add(PyModule.dicPython);
  Memo1.Lines.Add(PyModule.lstPython);
  Memo1.Lines.Add(PyModule.SayHello('Garfield'));

执行后,在Delphi的Memo1中将看到下面的内容:

Hello,This is a python string !
{'StringInfo': 'Hello,This is a python string !'}
['H', 'e', 'l', 'l', 'o', ',', 'T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', ' ', 'p', 'y', 't', 'h', 'o', 'n', ' ', 's', 't', 'r', 'i', 'n', 'g', ' ', '!']
Hello,Garfield

--结束END--

本文标题: Python For Delphi---

本文链接: https://lsjlt.com/news/186121.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python For Delphi---
    先上相关资源的下载吧: python4delphi: 主页: http://code.google.com/p/python4delphi/ 下载: svn checkout http://python4delphi.googlecode....
    99+
    2023-01-31
    Python Delphi
  • [Delphi]Python For D
    Python For Delphi搭建了Delphi和强大的脚本语言Python的桥梁,使用起来非常方便,让Delphi华丽的界面配合Python强大、简洁、稳定的后台逻辑处理能力,让应用程序模块清晰、界面漂亮、后台复杂逻辑不再复杂,大幅...
    99+
    2023-01-31
    Delphi Python
  • delphi怎么调用python文件
    要在Delphi中调用Python文件,可以使用Python4Delphi库。以下是一个简单的示例:首先,确保你已经安装了Pytho...
    99+
    2023-10-12
    delphi python
  • delphi集成python的方法是什么
    在Delphi中集成Python可以通过以下几种方法实现:1. 使用Python4Delphi(P4D):- Python4Delp...
    99+
    2023-09-28
    delphi python
  • Delphi中使用python脚本读取E
    前段时间,在正式项目中使用Python来读取Excel表格的数据。具体需求是,项目数据库中有些数据需要根据Excel表格里面的数据进行一些调整,功能应该比较简单。为了学习Python,决定使用Delphi+Python来实现。Delphi中...
    99+
    2023-01-31
    脚本 Delphi python
  • delphi 安装FastReport
    要在Delphi中安装FastReport,您可以按照以下步骤进行操作:1. 下载FastReport的安装程序,可以从FastRe...
    99+
    2023-09-28
    delphi
  • delphi FillChar的用法
    FillChar 是 Delphi 中的一个过程,用于将一段内存区域填充为指定的值。语法:```delphiprocedure Fi...
    99+
    2023-09-12
    delphi
  • Strategy for Python
    关卡地址:http://www.pythonchallenge.com/pc/def/ocr.html(点击前往) 这一关卡信息同样非常精简,只有短短的一句话,然后其他信息都没有什么用,真心用心良苦(能说这个作者操蛋吗)。不多说了,话语中...
    99+
    2023-01-31
    Strategy Python
  • 【python】prepare for
    //////////// install pip//////[root@wode012 tools]# python get-pip.py /tmp/tmp4BEPxg/pip.zip/pip/_vendor/requests/packag...
    99+
    2023-01-31
    python prepare
  • delphi和php是什么
    本篇内容介绍了“delphi和php是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!delphi是Windows平台下著名的快速应用程序...
    99+
    2023-06-21
  • delphi怎么调用ffmpeg
    要在Delphi中调用FFmpeg,你需要使用FFmpeg库的动态链接库(DLL),然后使用Delphi的外部函数来调用该库。以下是...
    99+
    2023-10-12
    delphi
  • delphi是什么语言
    delphi是一种编程语言和集成开发环境,是由Embarcadero Technologies公司开发的。Delphi是Object Pascal语言的一种实现,它在基于Windows操作系统的软件开发中得到广泛应用,Delphi以其快速开...
    99+
    2023-08-14
  • Delphi中CreateFileMapping怎么用
    在Delphi中,可以使用CreateFileMapping函数来创建文件映射对象。下面是一个简单的示例代码: const FI...
    99+
    2024-02-29
    Delphi
  • python语句-for
    for循环表达形式如下:for i in sequence:    执行语句比如从1加到100,用for怎么实现?写一个test_for.py来实验一下,代码如下# coding: utf-8 __a...
    99+
    2023-01-30
    语句 python
  • python for循环
    Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。for循环的语法格式如下:for iterating_var in sequence:    statem...
    99+
    2023-01-30
    python
  • MySQL for Python(一)
    一.安装mysql-python1.suse,redhat,fedora系统#yum install mysqldb2.debian,ubuntu系统# apt-get install python-mysqldb3.源码安装# http:...
    99+
    2023-01-31
    MySQL Python
  • Docker SDK for Python
    Docker引擎API的Python库。它允许您执行docker命令所做的任何操作,但可以在Python应用程序中运行容器、管理容器、管理群集等。官方文档:https://docker-py.readthedocs.io/en/stable...
    99+
    2023-01-31
    Docker SDK Python
  • Python for Windows 中
    关于python编码的基本常识 在python里面 “明文”是unicode类型 “密文”是其他的编码格式 如gbk utf-8 latin-1等等 编码: “明文”->”密文” .encode([目标编码格式]) 对象必...
    99+
    2023-01-31
    Python Windows
  • python中 for ... else
    在<Effective Python:编写高质量Python代码的59个有效方法>  这本书中并不推荐用 for else语句因为它不符合 编程语言的基本语法, 事实上这种语句更像是try:    # ......except:...
    99+
    2023-01-31
    python
  • Notes for python (1)
      It's a great pleasure that recently I start to lean Python, hohohohooooooo^_^使用sys模块 #!/usr/bin/python # Filename...
    99+
    2023-01-31
    Notes python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作