Delphi开发Pyhron GUI

有时您的应用程序需要一个用户界面,但是为Python应用程序制作用户界面最好的方法是什么?输入用于Python的DelphiVCL。VCL是成熟的Windows本机GUI框架,具有庞大的包含的可视组件库和强大的第三方组件集合。它是本机Windows应用程序的主流框架,但是如何在Python中使用它呢?多亏了DelphiVCL Python软件包(基于开源Python4Delphi库),VCL是用于使用Python构建本机Windows GUI的一流软件包。需要更多设计工具?您可以在Delphi中构建整个GUI,然后在Python中编写所有逻辑。

为什么本机GUI很重要

  • 性能: Windows为本机控件提供了硬件加速。
  • Windows句柄:本机Windows控件具有Windows句柄,可提供更好的操作系统和应用程序内集成。
  • 一致的行为:使用本机控件可使用户在使用的所有应用程序之间保持一致的行为。
  • Microsoft Active Accessibility(MSAA)是利用本机控件提供可访问性界面(如屏幕阅读器)的框架

流行的Python GUI框架

Tkinter TK接口)–默认的Python GUI(在Python许可下可用)使用Tcl / Tk跨平台小部件。Tk在C和某些Tcl中实现。支持各种样式,但不支持OS样式集成。Tkinter样本,泰山老父

import tkinter as tkiclass Application(tki.Frame):def __init__(self, master=None):super().__init__(master)self.list = tki.Listbox(self)self.editb = tki.Button(self, text="Add", command=self.add_to_list)self.edit = tki.Entry(self)self.label = tki.Label(self, text="Hello Python", anchor='w')self.master = masterself.place(anchor='nw', x=10, y=10, relwidth=1, relheight=1, bordermode='outside')self.create_widgets()def create_widgets(self):self.label.place(x=10, y=10, width=100, height=20)self.edit.place(x=10, y=30, width=250, height=24)self.editb.place(x=270, y=24, width=100, height=30)self.list.place(x=10, y=60, width=300, height=300)def add_to_list(self):self.list.insert(tki.END, self.edit.get())root = tki.Tk()
root.minsize(500, 400)
ttl = root.title("A Tkinter form")
app = Application(master=root)
app.mainloop()

Tkinter 窗体

PyQt pie-cute)–跨平台Qt小部件库的绑定。最初由Trolltech(1991)和Nokia(2008)共同创立。Qt是一组C ++库和开发工具,其中包括针对GUI,网络,线程,正则表达式,SVG,OpenGL,3D动画等的跨平台抽象。PyQT将这些类中的1000多个实现为一组Python模块。

  • GPL / LGPL许可证或Qt商业许可证
  • 必须安装,pip安装PyQt5
  • 融合样式选项接近匹配的平台外观,但仍不使用本机控件。PyQT样本。
import sys
from PyQt5.QtWidgets import *class PyQtLayout(QWidget):def __init__(self):super().__init__()self.UI()def UI(self):self.setGeometry(10, 10, 280, 280)self.move(10, 10)self.setWindowTitle('A Qt Form...')label = QLabel('Hello Python', self)label.move(10, 10)edit = QLineEdit("", self)edit.move(10, 30)    edit.resize(170, 20)       button = QPushButton("Add", self)button.move(190,28)listView = QListWidget(self)listView.move(10, 60)def buttonClick():listView.addItem(edit.text())button.clicked.connect(buttonClick)self.show()
def main():app = QApplication(sys.argv)#QApplication.setStyle(QStyleFactory.create('Windows'))ex = PyQtLayout()sys.exit(app.exec_())if __name__ == '__main__':main()

PyQT5 窗体

其他Python GUI框架。

  • PySide – Python Qt绑定项目,提供对完整Qt4.8框架的访问权限,以及用于快速为任何C ++库生成绑定的生成器工具。
  • wxPython –跨平台GUI Python库。它被实现为一组Python扩展模块,这些模块包装了用C ++编写的wxWidgets跨平台库的GUI组件。
  • PyGTK –绑定GTK(GNOME)。GTK是一个小部件工具箱。
  • Kivy –专注于移动和跨平台。

Delphi&VCL

  • Object Pascal(Delphi)是一种非常强大的语言,它基于良好的程序结构和可扩展的数据类型等核心基础。这些基础部分源自传统的Pascal语言,但即使是核心语言功能,从早期开始也有许多扩展。 下载Marco Cantu…的Object Pascal Handbook手册的PDF副本…免费! 
  • VCL Windows特定的VCL(可视化组件库)是一组组件和类,用于以Delphi和C ++语言快速开发Windows应用程序。
  • VCL的GUI组件是本机Windows GUI组件。

Python4Delphi和Embarcadero Delphi

  • Python for Delphi(P4D)是一组免费组件,这些组件将Python DLL包装到Delphi中。轻松执行Python脚本,创建新的Python模块和新的Python类型。
  • 可以将Python扩展创建为DLL,并提供不同级别的功能:
    • 对python API的低级访问
    • 与Python的高层双向交互
    • 使用Delphi自定义变量(VarPyth.pas)访问Python对象
    • 包装用于RTTI的python脚本中的Delphi对象(WrapDelphi.pas)
    • 使用Delphi类和函数创建python扩展模块
  • 使用Embarcadero Delphi设计漂亮的桌面和移动应用程序UI
  • 借助Delphi内置的丰富的第三方组件生态系统,可以更快,更智能的编写代码。
  • 集成本机调试可更快地调试
  • 编译和部署高性能本机应用程序
  • 轻松提高代码质量,协作和扩展IDE

适用于Python的DelphiVCL

  • 用于Python的DelphiVCL就是将Delphi对象包装起来,供在RTCL(WrapDelphiVCL.pas)中使用RTTI(WrapDelphi.pas)的Python脚本中使用。
  • 包装器可帮助从python快速创建和访问Delphi对象。
  • 这些包装器包含容器类,以扩展和公开可在python脚本中使用的自定义事件,方法,变量。

如何为Python构建DelphiVCL

  1. 观看视频,了解如何将Delphi对象作为Python扩展模块进行扩展结合Delphi和Python的优势– Python4Delphi从46.03分钟开始重播第2部分。
  2. 或者,我们可以查看博客文章“如何使用Python4Delphi将PythonModule扩展为DLL”。以类似的方式,创建了一个简单的Python模块DelphiVCL,该模块包装了所有的Delphi VCL对象。

注意:对于Python开发人员而言,如何构建此DelphiVCL Python扩展模块并不重要,而是可以学习可用的VCL对象及其属性来快速开发GUI应用程序。与上面提到的Tkinter和PyQt示例应用程序类似,下面是DelphiVCL示例应用程序。

from DelphiVCL import *class MainForm(Form):def __init__(self, Owner):self.Caption = "A VCL Form..."self.SetBounds(10, 10, 340, 410)self.lblHello = Label(self)self.lblHello.SetProps(Parent=self, Caption="Hello Python", Top=10, Left=10, Width=100, Height=24)self.edit1 = Edit(self)self.edit1.SetProps(Parent=self, Top=30, Left=10, Width=200, Height=24)self.button1 = Button(self)self.button1.SetProps(Parent=self, Caption="Add", OnClick=self.Button1Click)self.button1.SetBounds(220,29,90,24)self.lb1 = ListBox(self)self.lb1.SetProps(Parent=self)self.lb1.SetBounds(10,60,300,300)def Button1Click(self, Sender):self.lb1.Items.Add(self.edit1.Text)def main():Application.Initialize()Application.Title = "MyDelphiVCLApp"f = MainForm(Application)f.Show()FreeConsole()Application.Run()
main()

Delphi VCL Python窗体

比较不同框架的样式。

样式 

Delphi VCL Python 窗体

操作系统集成:

Delphi VCL Python 窗体

除了这些Delphi VCL之外,还使用Windows本机控件,每个控件都有一个支持UI测试的句柄。没有一个提供本机Windows控件或Windows平台集成。

如何运行DelphiVCL示例。

  1. 下载DelphiVCL.7z并根据python版本压缩。在解压缩的文件夹中找到DelphiVCL.pyd和示例TestVCL.py的位置。
  2. 在命令提示符下,导航到步骤1中提到的文件夹。提供Pythopn.exe路径空间DelphiVCL python脚本。按Enter键。例如)C:DelphiVCLDelphiVCL.64bit-39> C:PythonPython39python.Exe TestVCL.py
  3. 有关更多VCL组件演示的信息,请下载Delphi4Python.zip文件夹并将其解压缩。运行类似于步骤2的示例Delphi4PythonSample.py和Delphi4PythonComponentsSample.py。注意。这个Delphi4Python.pyd是使用Python39.dll构建的

VCL可视化界面UI设计器

  • 窗体设计时要创建或编辑一个使用形式的文件的图形应用程序,无论是.DFM或.fmx文件(或设计)被自动显示。
  • VCL表单窗体显示“最小化”,“调整大小”和“关闭”命令的标准Windows按钮。从ToolPallete拖放组件,您可以使用ObjectInspector直观地查看和设置属性和事件。
  • VCL组件的最终设计准则支持。
  • 拍摄表单快照(仅VCL)
  • LiveBindings是VCL和FireMonkey框架都支持的数据绑定功能。这是一个基于表达式的框架,这意味着它使用绑定表达式将对象绑定到其他对象或数据集字段。
  • 在表单上的各种可视组件之间创建新的LiveBindings。
  • 编辑现有的LiveBindings。
  • 可视化您创建的所有LiveBindings。
  • 将绑定图导出为图像文件。

在VCL Visual Designers的帮助下,您可以轻松快速地开发GUI,以后可以使用Python4Delphi对其进行包装,并可以扩展为类似于DelphiVCL的Python模块。下载DelphiVCLWebinar.zip文件夹,您可以在其中学习如何使用RAD studio包装自定义VCL表单。注意。这是使用Python39.dll和Rad Studio 10.4.1构建的。

参考文献

Delphi VCL DockWiki的 

  • http://docwiki.embarcadero.com/RADStudio/zh/Main_Page
  • http://docwiki.embarcadero.com/RADStudio/zh/VCL
  • http://docwiki.embarcadero.com/RADStudio/zh/Form_Designer
  • http://docwiki.embarcadero.com/RADStudio/en/How_To_Build_VCL_Forms_Applications
  • http://docwiki.embarcadero.com/RADStudio/zh/VCL_Styles_Overview

Python4Delphi 资源:

  • https://github.com/pyscripter/python4delphi

博客资源:

  • https://blogs.embarcadero.com/?s=python4delphi

YouTube Embarcadero频道链接:

  • https://www.youtube.com/channel/UCMmsCQhkz-WlJ-IVBzPhbgA

Python4德尔福

  • https://www.youtube.com/watch?v=aCz5h96ObUM(网络研讨会1)
  • https://www.youtube.com/watch?v=ssIKb3nJw5c(网络研讨会2)
  • https://www.youtube.com/watch?v=hjY6lBgrHhM(Python4Delphi入门)

资料下载

  • Slides
  • Python样本
  • Delphi样品

概要

  • 学习Delphi和构建本机GUI应用程序更加轻松快捷。
  • 丰富的第三方生态系统资源可用于入门。
  • Python提供了广泛的软件包,可简化开发人员从基本编程任务到高级科学,ML,AI和深度学习相关任务的工作。
  • 结合使用Delphi和Python的优势,可以帮助用户构建超快速的本机GUI应用程序。

结合Delphi和Python的优势:使用Delphi VCL组件快速构建超现代的Python本机Windows GUI桌面酷炫用户界面应用相关推荐

  1. 【python 算法接口】使用FastAPI框架快速构建高性能的api服务

    无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能课程 一.FastAPI ...

  2. python如何创建一个列表_python怎样快速构建列表?

    来自"专业人士笔记":创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com Python列表是Python程序中广泛使用的一种 ...

  3. python降低图片分辨率_使用numpy快速降低图像分辨率的Python代码

    我首先要说的是,你的"只装箱"方式似乎很不寻常,我想这正是@ljetibo在评论中所指的.在"优化"讨论之后,我将回到这个话题.在 首先,您可以通过去掉对np. ...

  4. python视频换脸例子_python视频换脸例子_超简单使用Python换脸实例

    换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...

  5. 超简单,Python爬取阴阳师游戏原声

    Python爬取阴阳师游戏BGM,附完整代码 爬取阴阳师游戏原声 网页分析 教程开始 1 请求json文件并获取数据 2 保存文件 注意,一定要看 结语 完整源码 目标网址:https://yys.1 ...

  6. delphi基础01-delphi表达式、delphi运算符、delphi函数调用、delphi集合构造函数、delphi索引、(值或变量)delphi类型转换

    delphi基础01-表达式.运算符.函数调用.集合构造函数.索引.(值或变量)类型转换 整理出来,供大家学习使用: http://docwiki.embarcadero.com/RADStudio/ ...

  7. python django 优势_那么多人选择Python,它的优势,缺点有哪些?

    提及到目前最火的编程语言,Python可谓是非常受欢迎的,属于四大编程语言之一,近些年来Python的增长趋势也是非常明显的,很多人都将Python作为入门的语言,对于很多人来说都会选择学习Pytho ...

  8. Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery

    Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery 一.背景 为什么要做这个三合一数据集组件呢?曾经我们公司用delphi开发的系统大多以ADO,BDE方式来连接数据库,这 ...

  9. python处理数据的优势-Python 的优势在哪里?

    Python的优势在: 1.Python如今是主流语言:程序编写简洁快速 入门简单功能强大 语法表达优美易读 代码开发效率很高 Google开源机器学习框架:TensorFlow 开源社区主推学习框架 ...

最新文章

  1. msyql request quit
  2. c语言程序设计 赵宏,C语言程序设计(模块化程序设计I )(6页)-原创力文档...
  3. Swift 4官方文档中文版 The Basic(上)
  4. asp.net程序调用NTFS分区下Oracle客户端
  5. ab压力测试工具linux,【Linux】ApacheBench(ab)压力测试工具
  6. java百度地图添加标注_调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注...
  7. MYSQL的函数有哪些?(4.3时间与日期函数)
  8. 【COMA】一种将团队回报拆分为独立回报的多智能体算法
  9. No.1 - 制作一个简单的菜单动画效果---百度IFE
  10. linux shell读取文件,shell脚本中读取文件的方法
  11. ORACLE有EXCEL中trend函数,借助Excel TREND 函数来解决线性插值的计算
  12. editplus php格式化,让Editplus自动格式化css和js
  13. 小米路由器r1d刷第三方_小米R1D路由器刷Advacned Tomato V3.4-140固件
  14. 计算机应用的基础教学实践论文,【计算机应用论文】计算机应用的基础教学实践(共2834字)...
  15. 一网打尽“小黄图”!手把手教你造一只AI鉴黄神器(内附代码及数据集)
  16. LTD营销SaaS-官微云代理商加盟服务
  17. 高德地图API--天气查询
  18. 【学习笔记2】新机折腾:装系统、远程控制和插头转换
  19. 国内顶级经济类期刊有哪些?
  20. 安卓性能优化(响应优化)

热门文章

  1. 怎么把ppt文字大小设置一致_iPhone12暖屏怎么办 iPhone12暖屏解决方法
  2. 散射回波仿真Matlab,基于散射中心模型的ISAR回波仿真方法
  3. zabbix实现对mysql数据库的监控
  4. Keil uVision4使用总结
  5. 微信后台基于时间序的海量数据冷热分级架构设计实践
  6. 狗哥历经四个小时整理大佬的内容,你确定不来看一下?
  7. Creator 拓展展Button组件 增加点击音效 默缩放。点击间隔
  8. 32个c语言关键字发音,加注汉语发音的C语言32个语句和9种控制语
  9. 正则表达式( 形容词、转义符号、补充)
  10. Emlog程序纯黑色调CYP音乐模板源码