结合Delphi和Python的优势:使用Delphi VCL组件快速构建超现代的Python本机Windows 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()
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()
其他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
- 观看视频,了解如何将Delphi对象作为Python扩展模块进行扩展结合Delphi和Python的优势– Python4Delphi从46.03分钟开始重播第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之外,还使用Windows本机控件,每个控件都有一个支持UI测试的句柄。没有一个提供本机Windows控件或Windows平台集成。
如何运行DelphiVCL示例。
- 下载DelphiVCL.7z并根据python版本解压缩。在解压缩的文件夹中找到DelphiVCL.pyd和示例TestVCL.py的位置。
- 在命令提示符下,导航到步骤1中提到的文件夹。提供Pythopn.exe路径空间DelphiVCL python脚本。按Enter键。例如)C:DelphiVCLDelphiVCL.64bit-39> C:PythonPython39python.Exe TestVCL.py
- 有关更多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桌面酷炫用户界面应用相关推荐
- 【python 算法接口】使用FastAPI框架快速构建高性能的api服务
无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.人工智能课程 一.FastAPI ...
- python如何创建一个列表_python怎样快速构建列表?
来自"专业人士笔记":创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!zhuanlan.zhihu.com Python列表是Python程序中广泛使用的一种 ...
- python降低图片分辨率_使用numpy快速降低图像分辨率的Python代码
我首先要说的是,你的"只装箱"方式似乎很不寻常,我想这正是@ljetibo在评论中所指的.在"优化"讨论之后,我将回到这个话题.在 首先,您可以通过去掉对np. ...
- python视频换脸例子_python视频换脸例子_超简单使用Python换脸实例
换脸! 这段时间,deepfakes搞得火热,比方说把<射雕英雄传>里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说<速度与激情7& ...
- 超简单,Python爬取阴阳师游戏原声
Python爬取阴阳师游戏BGM,附完整代码 爬取阴阳师游戏原声 网页分析 教程开始 1 请求json文件并获取数据 2 保存文件 注意,一定要看 结语 完整源码 目标网址:https://yys.1 ...
- delphi基础01-delphi表达式、delphi运算符、delphi函数调用、delphi集合构造函数、delphi索引、(值或变量)delphi类型转换
delphi基础01-表达式.运算符.函数调用.集合构造函数.索引.(值或变量)类型转换 整理出来,供大家学习使用: http://docwiki.embarcadero.com/RADStudio/ ...
- python django 优势_那么多人选择Python,它的优势,缺点有哪些?
提及到目前最火的编程语言,Python可谓是非常受欢迎的,属于四大编程语言之一,近些年来Python的增长趋势也是非常明显的,很多人都将Python作为入门的语言,对于很多人来说都会选择学习Pytho ...
- Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery 一.背景 为什么要做这个三合一数据集组件呢?曾经我们公司用delphi开发的系统大多以ADO,BDE方式来连接数据库,这 ...
- python处理数据的优势-Python 的优势在哪里?
Python的优势在: 1.Python如今是主流语言:程序编写简洁快速 入门简单功能强大 语法表达优美易读 代码开发效率很高 Google开源机器学习框架:TensorFlow 开源社区主推学习框架 ...
最新文章
- msyql request quit
- c语言程序设计 赵宏,C语言程序设计(模块化程序设计I )(6页)-原创力文档...
- Swift 4官方文档中文版 The Basic(上)
- asp.net程序调用NTFS分区下Oracle客户端
- ab压力测试工具linux,【Linux】ApacheBench(ab)压力测试工具
- java百度地图添加标注_调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注...
- MYSQL的函数有哪些?(4.3时间与日期函数)
- 【COMA】一种将团队回报拆分为独立回报的多智能体算法
- No.1 - 制作一个简单的菜单动画效果---百度IFE
- linux shell读取文件,shell脚本中读取文件的方法
- ORACLE有EXCEL中trend函数,借助Excel TREND 函数来解决线性插值的计算
- editplus php格式化,让Editplus自动格式化css和js
- 小米路由器r1d刷第三方_小米R1D路由器刷Advacned Tomato V3.4-140固件
- 计算机应用的基础教学实践论文,【计算机应用论文】计算机应用的基础教学实践(共2834字)...
- 一网打尽“小黄图”!手把手教你造一只AI鉴黄神器(内附代码及数据集)
- LTD营销SaaS-官微云代理商加盟服务
- 高德地图API--天气查询
- 【学习笔记2】新机折腾:装系统、远程控制和插头转换
- 国内顶级经济类期刊有哪些?
- 安卓性能优化(响应优化)