pythongui
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 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()

 

tkinter-2034107
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()

 

qt-7610709
PyQT5 窗体

 

其他Python GUI框架。

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

Delphi&VCL

  • 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()

 

delphivcl-8346911
Delphi VCL Python窗体

 

比较不同框架的样式。

样式 

Delphi VCL Python 窗体
Delphi VCL Python 窗体

操作系统集成:

比较2-4853228
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的 

Python4Delphi 资源:

博客资源:

YouTube Embarcadero频道链接:

Python4德尔福

资料下载

概要

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

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐