Python论坛  - 讨论区

标题:[python-chinese] 怎样调用嵌入delphi的python代码中的函数

2005年04月14日 星期四 02:44

Tom myata99 at tom.com
Thu Apr 14 02:44:29 HKT 2005

请各位指点,谢谢!

delphi 7
python 2.3
win98
Python for Delphi V3.25

问题1:

在delphi里面:
1   创建一个 Form ;
2   创建一个 TMemo(Memo1) 来容纳 python code;
3   创建一个 TPythonInputOutput (PythonInputOutput1) ;
4   创建一个 TPythonEngine (PythonEngine1) ;
5   创建一个 PythonDelphiVar components ,命名为 bx.  设置 VarName 属性 
和name属性相同;
6   把TPythonEngine的IO属性连接到TPythonInputOutput;
7   创建一个 TButton (Button1) ;
8   在Memo1中写入python代码 (即设置其lines属性):

           def ax(m,n):
                  y=10
                  bx.value=y+m+n
                  ...

现在,点击Button1, 怎样调用python代码中的函数ax,传递参数(比如 m=33 and 
n=25), 取得 bx.ValueAsString  ;




Delphi Code:

---------------------------

unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, 
Forms,
   Dialogs, PythonEngine, StdCtrls;

type
   TForm1 = class(TForm)
     Memo1: TMemo;
     Button1: TButton;
     PythonEngine1: TPythonEngine;
     bx: TPythonDelphiVar;
     PythonInputOutput1: TPythonInputOutput;
     procedure Button1Click(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
          /////////////////////////////////////////////////
          //                                             //
          //  How to call the funtion ax passing the     //
          //  arguments(such as m=33 and n=25), and      //
          //  get bx.ValueAsString ??                    // 

          //                                             //
          /////////////////////////////////////////////////


          showmessage( bx.ValueAsString );


end;

end.



-------------------------------





问题2:

还有,如果把python代码保存为一个单独的文件,在delphi中调用该文件,并调用 
其中的函数,我经过实践,发现python文件只能为.py格式,如果是.pyc,就会失 
败,我在google搜索,发现有人也遇到这个问题,但没找到解决办法,请教各位有 
无解决办法?具体的delphi代码该如何写?




谢谢!!




[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 10:48

python leo python.leo at gmail.com
Thu Apr 14 10:48:17 HKT 2005

你的PythonDelphiVar有了onchange属性了吧?
调用PYTHON函数可以用DELPHI触发PYTHONEngine来执行字符串或文件,我的做法是把资源读出来,用python引擎执行字符串

On 4/14/05, Tom <myata99 at tom.com> wrote:
> 请各位指点,谢谢!
> 
> delphi 7
> python 2.3
> win98
> Python for Delphi V3.25
> 
> 问题1:
> 
> 在delphi里面:
> 1   创建一个 Form ;
> 2   创建一个 TMemo(Memo1) 来容纳 python code;
> 3   创建一个 TPythonInputOutput (PythonInputOutput1) ;
> 4   创建一个 TPythonEngine (PythonEngine1) ;
> 5   创建一个 PythonDelphiVar components ,命名为 bx.  设置 VarName 属性
> 和name属性相同;
> 6   把TPythonEngine的IO属性连接到TPythonInputOutput;
> 7   创建一个 TButton (Button1) ;
> 8   在Memo1中写入python代码 (即设置其lines属性):
> 
>           def ax(m,n):
>                  y=10
>                  bx.value=y+m+n
>                  ...
> 
> 现在,点击Button1, 怎样调用python代码中的函数ax,传递参数(比如 m=33 and
> n=25), 取得 bx.ValueAsString  ;
> 
> Delphi Code:
> 
> ---------------------------
> 
> unit Unit1;
> 
> interface
> 
> uses
>   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
> Forms,
>   Dialogs, PythonEngine, StdCtrls;
> 
> type
>   TForm1 = class(TForm)
>     Memo1: TMemo;
>     Button1: TButton;
>     PythonEngine1: TPythonEngine;
>     bx: TPythonDelphiVar;
>     PythonInputOutput1: TPythonInputOutput;
>     procedure Button1Click(Sender: TObject);
>   private
>     { Private declarations }
>   public
>     { Public declarations }
>   end;
> 
> var
>   Form1: TForm1;
> 
> implementation
> 
> {$R *.dfm}
> 
> procedure TForm1.Button1Click(Sender: TObject);
> begin
>          /////////////////////////////////////////////////
>          //                                             //
>          //  How to call the funtion ax passing the     //
>          //  arguments(such as m=33 and n=25), and      //
>          //  get bx.ValueAsString ??                    //
> 
>          //                                             //
>          /////////////////////////////////////////////////
> 
>          showmessage( bx.ValueAsString );
> 
> end;
> 
> end.
> 
> -------------------------------
> 
> 问题2:
> 
> 还有,如果把python代码保存为一个单独的文件,在delphi中调用该文件,并调用
> 其中的函数,我经过实践,发现python文件只能为.py格式,如果是.pyc,就会失
> 败,我在google搜索,发现有人也遇到这个问题,但没找到解决办法,请教各位有
> 无解决办法?具体的delphi代码该如何写?
> 
> 谢谢!!
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


-- 
You ask me,me ask who?

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年04月14日 星期四 14:37

Tom myata99 at tom.com
Thu Apr 14 14:37:50 HKT 2005

谢谢你!

其实我需要的就是这两个:
1> 调用外部的已编译的.pyc文件(不是.py文件)中的function或者class,取得
返回值;
2> 把python代码粘贴在一个不可见的Memo里面,调用python代码里的function或
者class,取得返回值;




麻烦你说的再详细些,需要哪些Python for Delphi的控件(一共8个),请给一段
具体的代码,只需要最关键的几个语句,我对delphi懂得少,实在不知道该怎样调
用函数和类.

谢谢!






python leo wrote:
> 你的PythonDelphiVar有了onchange属性了吧?
> 调用PYTHON函数可以用DELPHI触发PYTHONEngine来执行字符串或文件,我的做法是把资源读出来,用python引擎执行字符串
> 
> On 4/14/05, Tom <myata99 at tom.com> wrote:
> 
>>请各位指点,谢谢!
>>
>>delphi 7
>>python 2.3
>>win98
>>Python for Delphi V3.25
>>
>>问题1:
>>
>>在delphi里面:
>>1   创建一个 Form ;
>>2   创建一个 TMemo(Memo1) 来容纳 python code;
>>3   创建一个 TPythonInputOutput (PythonInputOutput1) ;
>>4   创建一个 TPythonEngine (PythonEngine1) ;
>>5   创建一个 PythonDelphiVar components ,命名为 bx.  设置 VarName 属性
>>和name属性相同;
>>6   把TPythonEngine的IO属性连接到TPythonInputOutput;
>>7   创建一个 TButton (Button1) ;
>>8   在Memo1中写入python代码 (即设置其lines属性):
>>
>>          def ax(m,n):
>>                 y=10
>>                 bx.value=y+m+n
>>                 ...
>>
>>现在,点击Button1, 怎样调用python代码中的函数ax,传递参数(比如 m=33 and
>>n=25), 取得 bx.ValueAsString  ;
>>
>>Delphi Code:
>>
>>---------------------------
>>
>>unit Unit1;
>>
>>interface
>>
>>uses
>>  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
>>Forms,
>>  Dialogs, PythonEngine, StdCtrls;
>>
>>type
>>  TForm1 = class(TForm)
>>    Memo1: TMemo;
>>    Button1: TButton;
>>    PythonEngine1: TPythonEngine;
>>    bx: TPythonDelphiVar;
>>    PythonInputOutput1: TPythonInputOutput;
>>    procedure Button1Click(Sender: TObject);
>>  private
>>    { Private declarations }
>>  public
>>    { Public declarations }
>>  end;
>>
>>var
>>  Form1: TForm1;
>>
>>implementation
>>
>>{$R *.dfm}
>>
>>procedure TForm1.Button1Click(Sender: TObject);
>>begin
>>         /////////////////////////////////////////////////
>>         //                                             //
>>         //  How to call the funtion ax passing the     //
>>         //  arguments(such as m=33 and n=25), and      //
>>         //  get bx.ValueAsString ??                    //
>>
>>         //                                             //
>>         /////////////////////////////////////////////////
>>
>>         showmessage( bx.ValueAsString );
>>
>>end;
>>
>>end.
>>
>>-------------------------------
>>
>>问题2:
>>
>>还有,如果把python代码保存为一个单独的文件,在delphi中调用该文件,并调用
>>其中的函数,我经过实践,发现python文件只能为.py格式,如果是.pyc,就会失
>>败,我在google搜索,发现有人也遇到这个问题,但没找到解决办法,请教各位有
>>无解决办法?具体的delphi代码该如何写?
>>
>>谢谢!!
>>
>>_______________________________________________
>>python-chinese list
>>python-chinese at lists.python.cn
>>http://python.cn/mailman/listinfo/python-chinese
>>
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号