结合Delphi和Python的优势:使用Delphi VCL组件快速构建超现代的Python本机Windows GUI桌面酷炫用户界面应用
Delphi开发Pyhron GUI有时您的应用程序需要一个用户界面,但是为Python应用程序制作用户界面最好的方法是什么?输入用于Python的DelphiVCL。VCL是成熟的Windows本机GUI框架,具有庞大的包含的可视组件库和强大的第三方组件集合。它是本机Windows应用程序的主流框架,但是如何在Python中使用它呢?多亏了DelphiVCL Python软件包(基于开源Pyth
有时您的应用程序需要一个用户界面,但是为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 tki
class 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 = master
self.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 资源:
博客资源:
YouTube Embarcadero频道链接:
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入门)
资料下载
概要
- 学习Delphi和构建本机GUI应用程序更加轻松快捷。
- 丰富的第三方生态系统资源可用于入门。
- Python提供了广泛的软件包,可简化开发人员从基本编程任务到高级科学,ML,AI和深度学习相关任务的工作。
- 结合使用Delphi和Python的优势,可以帮助用户构建超快速的本机GUI应用程序。
更多推荐
所有评论(0)