• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

PythonForDelphi示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

Python For Delphi 示例

samson <[email protected]>            hide details    3:22 pm (50 minutes ago) 
        reply-to                [email protected]      
        to              "python.cn" <[email protected]>        
        date            Aug 4, 2007 3:22 PM     
        subject         [CPyUG:29962] [原创]Python For Delphi 示例 (最好的Python GUI实现方法)      
        mailed-by               googlegroups.com
最近用Python For Delphi有了一段时间,感觉这么好的东西不与大家分享简直是暴敛天物了,而且前一段看大家讨论GUI的问题相当多,为 了让大家少走点弯路,所以萌发了写此文的念头。

因时间有限,在此只做一个简要的实例,在该实例中,可以通过delphi操作Python中的list对象。其实P4D功能十分强大,远不止这些,还可 以用Delphi写出供Python调用的模块,这样的模块性能可是相当的高哦。 希望能够借此文抛砖引玉,勾起大家使用P4D的愿望。


1.1. 步骤
0。安装delphi7,安装python25
1。安装P4D控件
2。创建一个窗体,放置PythonEngine,PythonGUIInputOutput,Memo三个控件

3。PythonEngine的IO属性指到PythonGUIInputOutput,PythonGUIInputOutput的Output属性指到Memo

4。在主窗体的FormActivate事件中,添加如下代码(注意还需要增加Uses):


uses
 VarPyth;

procedure TForm1.FormActivate(Sender: TObject);
var
 PyModule: variant;
 i: integer;
begin
 PyModule:=Import('hello');
 memo1.Lines.Add(Format('模块初始化时接口对象长度:%s',
[PyModule.IntfListDemo.Length]));
 PyModule.main();
 memo1.Lines.Add(Format('调用Python后接口对象长度:%s',
[PyModule.IntfListDemo.Length]));
 memo1.Lines.Add('接口对象内容');
 for i:=0 to PyModule.IntfListDemo.Length-1 do
 begin
   memo1.Lines.Add(PyModule.IntfListDemo.GetItem(i));
 end;

 for i:=PyModule.IntfListDemo.Length-1 downto 0 do
 begin
   PyModule.IntfListDemo.RemoveItem(i);
   memo1.Lines.Add(Format('操纵Python对象后,接口对象长度:%s',
[PyModule.IntfListDemo.Length]));
 end;

 PyModule.IntfListDemo.AppendStr('重新');
 PyModule.IntfListDemo.AppendStr('初始化');
 PyModule.IntfListDemo.AppendStr('Python');
 PyModule.IntfListDemo.AppendStr('变量');

 memo1.Lines.Add('接口对象内容');
 for i:=0 to PyModule.IntfListDemo.Length-1 do
 begin
   memo1.Lines.Add(PyModule.IntfListDemo.GetItem(i));
 end;
end;
5。创建hello.py程序,与delphi程序在同一个目录下。代码如下:

切换行号显示
   1 # -*- coding: utf-8 -*-
   2 class MyP4DStrList(list):
   3        def CopyFrom(self,SrcList):
   4                self.Clear()
   5                for i in SrcList:
   6                        self.append(i)
   7        def Clear(self):
   8                for x in range(len(self)): del self[0]
   9        def GetItem(self,index):
  10                return self[index]
  11        def RemoveItem(self,index):
  12                del self[index]
  13        def AppendStr(self,StrToAppend):
  14                self.append(StrToAppend)
  15        def RemoveStr(self,StrToRemove):
  16                self.remove(StrToRemove)
  17
  18 IntfListDemo=MyP4DStrList()
  19
  20
  21 def main():
  22        IntfListDemo.append('hello')
  23        IntfListDemo.append('world')
  24        IntfListDemo.append('with')
  25        IntfListDemo.append('P4D')
  26
  27
  28
  29 if __name__ == '__main__':
  30        main()

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/djcsch2001/archive/2008/09/11/2915428.aspx


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap