SlideShare a Scribd company logo
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Jim McKeeth
Chief Developer Advocate
Embarcadero Technologies
jim.mckeeth@embarcadero.com
@JimMcKeeth
Slides, links & replay: blogs.embarcadero.com/?p=130176
Python on
Android
with Delphi FMX
The Cross Platform GUI Framework
Part 2
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Agenda
• Introduction to Delphi FMX
• Architecture and platforms
• Installing and using Delphi FMX for Python
• Demonstrations & Code
• Python on Android
• Going Beyond - Mixing Delphi & Python
• More information, Next steps, Q&A
Slides, links & replay: blogs.embarcadero.com/?p=130176
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
About Jim McKeeth
● Chief Developer Advocate & Engineer for Embarcadero
● Long time software developer
○ Delphi, C/C++, Python, Java, JavaScript, Ruby, etc.
● Invented and patented pattern and swipe to unlock
○ e.g. US Patents # 8352745 & 6766456
● Built thought controlled drone with Google Glass and
wireless EEG headset
● Contributor to Internet of Things and Data Analytics Handbook
● Blogger, podcaster, conference speaker, webinar host, etc.
● Twitter, TikTok, YouTube, etc. @JimMcKeeth
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Who are you?
● Python devs who want a nice GUI
● Python devs curious about Delphi
● Delphi devs who want to use Python
● Delphi devs curious about what’s new
● Other devs curious about Delphi & Python
I’ll do my best not to assume too much familiarity with either
Delphi or Python, but also include code and technical details.
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
It’s not a Competition
● Developers have multiple tools on their workbench
● It is about finding the right tool for each task
● Having specialized tools for different tasks doesn’t
detract from favorite tools
● You can always find a specific task
that another tool is better for,
but no one tool is that best
for all tasks.
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
What is Delphi for Python?
● Set of free Python modules bringing Delphi’s GUI libraries
to Python developers
○ Mature, feature rich, native & cross-platform
○ Does not require Delphi to use
● Based on the open source Python4Delphi (same
technology that powers the PyScripter IDE)
● Available today on GitHub & PyPi
○ Currently in beta, but ready for use
● DelphiVCL for Python supports Windows (32-bit & 64-bit)
● DelphiFMX for Python adds Linux, Android, & Mac OS
● Part of a bidirectional bridge between Delphi and Python
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Dissecting the Technology Stacks
A compiled general-purpose
programming stack (IDE +
Compiler + Libraries)
introduced in 1995 as the
successor to Turbo Pascal.
Delphi
Delphi VCL
for Python
Delphi FMX
for Python
Python module for
Windows GUI development.
Python module for
cross platform GUI
development.
Visual Component
Library (VCL)
Delphi Library for
Windows GUI
development
FireMonkey
(FMX)
Delphi Library for
cross-platform GUI
development
Python4Delphi
Open-source bidirectional
bridge combining Delphi
and Python
Free and
commercial
licenses with
source.
Open source.
Free to use,
modify, and
redistribute.
An interpreted high-level
general-purpose
programming language.
Introduced in 1991 as the
successor to ABC.
Python
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
FMX
The Cross-Platform
FireMonkey Framework
● Takes advantage of GPU libraries to provide a hardware accelerated, rich
user interface that is fast and looks great across multiple platforms:
○ Windows, macOS, iOS, Android, and Linux
○ Uses DirectX on Windows, OpenGL on Linux, OpenGL-ES on Android, and
Metal on iOS and macOS
● Similar to VCL, but not designed to be compatible
○ Designed as cross platform from the ground up
● Integrated GPU effects, animations, and robust styling system
● Platform services abstract the access to platform hardware and
functionality to intelligently adapt the UI & UX to platform specifics
● Very flexible component system - do more with fewer components
(nestable & styleable)
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Getting Started with
Delphi FMX for Python
Rich GUI Framework for Python
on Windows, Mac, Linux, & Android
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Delphi for Python
● Windows 32-bit and 64-bit only
● Windows 8.1 through Windows 11
○ (Earlier versions may work, but not supported.)
● Based on native Windows components
● Includes Windows Handles, Messages,
Accessibility, etc.
● Styling system
● Uses GPU for custom rendering
● Multi-platform for Windows, Linux,
Android, and Mac OS
● Higher level of abstraction
● Platform services simplifies behaviors
● Styling system
Delphi VCL for Python Delphi FMX for Python
Covered in
Part 1
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Delphi FMX for Python Installation
● Install via pip
○ pip install delphifmx
● Supports:
○ Win32 x86, Win64 x86, Linux64 x86, Android64, Mac OS x64 (Intel)
and Mac M1 (Arm) architectures
○ Python cp3.6, cp3.7, cp3.8, cp3.9 and cp3.10
(excluding cp3.6 on Linux and macOS)
● Conda support:
○ Win x86 and x64 from Python cp3.6 to cp3.10
○ Linux x86_64 from Python cp3.7 to cp3.9 (Recommended!)
○ macOS not supported yet
● Details and downloads
○ github.com/Embarcadero/DelphiFMX4Python
○ pypi.org/project/delphifmx/
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Hello Delphi FMX for Python
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Hello World
from delphifmx import *
Application.Initialize()
Application.Title = "Hello Delphi FMX"
Application.MainForm = Form(Application)
Application.MainForm.SetProps(Caption = "Hello World")
msg = Label(Application.MainForm)
msg.SetProps(Parent = Application.MainForm,
Text = "Hello Python from Delphi FMX",
Position = Position(PointF(20, 20)),
Width = 200)
Application.MainForm.Show()
Application.Run() # This is the main loop
Application.MainForm.Destroy()
The simplest example
Configure the form
Create and configure the label
Show the form and start the
main loop
Configure the Application
https://github.com/Embarcadero/DelphiFMX4Python/blob/main/samples/Simplest.py
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
from delphifmx import *
class HelloForm(Form):
def __init__(self, owner):
self.SetProps(Caption = "Hello Python",
Position = "poScreenCenter", OnShow = self.__form_show)
self.hello = Label(self)
self.hello.SetProps(Parent = self,
Text = "Hello Python from Delphi FMX",
Position = Position(PointF(20, 20)), Width = 200)
self.clickme = Button(self)
self.clickme.SetProps(Parent = self, Text = "Click Me",
Position = Position(PointF(20, 50)), OnClick = self.__button_click)
def __form_show(self, sender):
self.SetProps(Width = 300, Height = 400)
def __button_click(self, sender):
self.hello.Text = "Thanks!"
self.Width = 300
def main():
Application.Initialize()
Application.Title = "Hello Delphi FMX"
Application.MainForm = HelloForm(Application)
Application.MainForm.Show()
Application.Run()
Application.MainForm.Destroy()
if __name__ == '__main__':
main()
Hello World
An Object Oriented example
HelloForm is an FMX Form object
Button has an event handler assigned
Event handler for button click
Show the form and start the
main loop
https://github.com/Embarcadero/DelphiFMX4Python/blob/main/samples/HelloDelphiFMX.py
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
from delphifmx import *
from os.path import exists
class HelloForm(Form):
def __init__(self, owner):
self.SetProps(Caption = "My To Do List", OnShow = self.__form_show, OnClose = self.__form_close)
self.hello = Label(self)
self.hello.SetProps(Parent = self, Text = "Next Do: ", Position = Position(PointF(20, 20)))
self.edit = Edit(self)
self.edit.SetProps(Parent = self, Position = Position(PointF(80,18)))
self.clickme = Button(self)
self.clickme.SetProps(Parent = self, Text = "Add",
Position = Position(PointF(190, 18)), Width = 80, OnClick = self.__button_click)
self.list = ListBox(self)
self.list.SetProps(Parent = self, Position = Position(PointF(20, 60)), Width = 250, OnClick = self.__list_item_click)
def __list_item_click(self, sender):
if (self.list.itemindex > -1):
self.list.items.delete(self.list.itemindex)
def __form_show(self, sender):
self.SetProps(Width = 300, Height = 320)
if exists("todo.txt"):
self.list.items.loadfromfile("todo.txt")
def __form_close(self, sender, action):
self.list.items.savetofile("todo.txt")
action = "caFree"
def __button_click(self, sender):
self.list.items.add(self.edit.text)
self.edit.text = ""
ToDo App
Starting to get useful….
Left main() off for space.
https://github.com/Embarcadero/DelphiFMX4Python/blob/main/samples/ToDoList.py
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
With Style
And more controls
https://github.com/Embarcadero/DelphiFMX4Python/tree/main/samples/ControlsDesktop
StyleManager().SetStyle(
StyleStreaming().LoadFromFile("StyleFile.style"))
Load and apply style
Embarcadero is working on a
free style bundle for Python
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
● Take full advantage of the Delphi IDE
designers and property editors
● WYSIWYG preview with styles
● Export the form for use in Python then write Python code
● Just right-click and export with the IDE add-in
● Works with any Delphi edition requires no Object Pascal
● github.com/Embarcadero/DelphiFMX4Python/tree/main/experts
● Currently uses a binary .pydfm file, but text version coming
Desig Your UI
in the Delphi IDE
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Exported from Delphi’s FMX Designers to Python
with Styles
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Exported from Delphi’s FMX Designers to Python
with Styles and Animations
Native Delphi on Windows Pure Cross-Platform Python App
The spinning animations are just because I could…
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Deploying
Python to
Android
Yes, Python
on Android!
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Fundamentals
● Delphi FMX supports Android ARM64 as a target
● The Python4Delphi library supports Android
● Allows building Delphi app to run Python on Android
Solution
● A pre-built Delphi application with Python enabled
● User modifiable Python script payload that runs automatically
● Automated tool to modify the Android Manifest and build final APK
○ On GitHub github.com/Embarcadero/PythonFMXBuilder (alpha?)
○ Or resign modified APK manually
To Do
● Live preview before deploying to Android
● Bundling multiple Python scripts & modules
● Customize icons, splash screens, loading, etc.
● More testing, debugging, and your suggestions….
The Architecture
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Running Python on Android
● Delphi compiles natively for Android
● The Python runtime is embedded into the app
● Python is dynamically interpreted and executed at runtime
● All of Delphi FMX for Python is available
● Supports additional Python modules
● Completely local - no network access necessary
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
github.com/Embarcadero/PythonFMXBuilder
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Going Further…
Exploring the
Delphi for Python
Bridge
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Customizing
Python on
Android
Take your
app further
with Delphi
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Combine Delphi and Python
● The Python4Delphi library is a
bidirectional bridge
● Develop parts of your solution in Delphi,
and part in Python
○ Play to the strengths of each
● Merge them together into a single
cohesive solution
● Find samples, tutorials, and videos
○ github.com/pyscripter/python4delphi
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Use Delphi to Create
Native Python Modules
● Many Python modules are written in C/C++
and natively compiled
● Delphi also creates natively compiled Python
modules via Python4Delphi
● Prototype rapidly in Python, and then create
optimized modules in Delphi to clear
bottlenecks
● Much like Python, Delphi code is focused on
readability and clear structure and may be
easier for you than using C/C++
● Augment your use of PyPy or Cython
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Documentation and
Library References
● Main Delphi documentation
○ Main docwiki.embarcadero.com/RADStudio/en/
○ VCL docwiki.embarcadero.com/RADStudio/en/VCL_Overview
○ FMX docwiki.embarcadero.com/RADStudio/en/FireMonkey
● Library Reference
○ Main docwiki.embarcadero.com/Libraries/en/
○ VCL docwiki.embarcadero.com/Libraries/en/Vcl
○ FMX docwiki.embarcadero.com/Libraries/en/FMX
● Delphi prefixes type names with a “T”
○ TEdit in Delphi is an Edit in Python
○ It is just a naming convention
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
About PyScripter
● Popular open-source Python IDE
sponsored by Embarcadero
● All the features expected in a modern Python
IDE while being lightweight and very fast
● Natively compiled for Windows to use minimal
memory with maximum performance
● Full Python debugging with remote debugging
● Integration with Python tools like PyLint,
TabNanny, Profile, etc.
● Run or debug files from memory.
● embarcadero.com/free-tools/pyscripter/free-download
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
About UltraEdit
● High performance text editor for
programmers.
● Industry's best large file handling: 10+ GB
and beyond.
● Syntax highlighting for nearly any
language or data format.
● Smart templates.
● Hex editing. Column / block mode
editing.
● Part of Idera family of developer tools.
● ultraedit.com/products/ultraedit/
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Next Steps
● Install Delphi FMX for Python github.com/Embarcadero/DelphiFMX4Python
○ See the samples, Star the Repository, file issues, and make feature requests
● Read the blog post (links, replays) blogs.embarcadero.com/?p=130176
● See part 1 on Delphi VCL blogs.embarcadero.com/?p=128183
● Start a 30-day Delphi trial embarcadero.com/products/delphi/start-for-free
● Subscribe on YouTube youtube.com/c/EmbarcaderoTechnologies
● Follow us on Twitter twitter.com/embarcaderotech
● Like us on Facebook facebook.com/embarcaderotech
● Follow us on LinkedIn linkedin.com/company/embarcadero-technologies
● Read our blog pythongui.org
Delphi for Python
Copyright © 2022 by Embarcadero, an Idera company
Jim McKeeth
Chief Developer Advocate
Embarcadero Technologies
jim.mckeeth@embarcadero.com
@JimMcKeeth
Slides, links & replay: blogs.embarcadero.com/?p=130176
Python on
Android
with Delphi FMX
The Cross Platform GUI Framework
Part 2
Q&A

More Related Content

What's hot

LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
Thomas Graf
 
Efi booting
Efi bootingEfi booting
Efi booting
Mohamed Kajamoideen
 
BPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLabBPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLab
Taeung Song
 
Effective Linux Development Using PetaLinux Tools 2017.4
Effective Linux Development Using PetaLinux Tools 2017.4Effective Linux Development Using PetaLinux Tools 2017.4
Effective Linux Development Using PetaLinux Tools 2017.4
Zach Pfeffer
 
OS scheduling and The anatomy of a context switch
OS scheduling and The anatomy of a context switchOS scheduling and The anatomy of a context switch
OS scheduling and The anatomy of a context switch
Daniel Ben-Zvi
 
Hacking Microsoft Remote Desktop Services for Fun and Profit
Hacking Microsoft Remote Desktop Services for Fun and ProfitHacking Microsoft Remote Desktop Services for Fun and Profit
Hacking Microsoft Remote Desktop Services for Fun and Profit
Alisa Esage Шевченко
 
Clear Linux OS - Architecture Overview
Clear Linux OS - Architecture OverviewClear Linux OS - Architecture Overview
Clear Linux OS - Architecture Overview
Open Source Technology Center MeetUps
 
An Introduction to RISC-V bootflow
An Introduction to RISC-V bootflowAn Introduction to RISC-V bootflow
An Introduction to RISC-V bootflow
Atish Patra
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux Kernel
Divye Kapoor
 
HPE HPE InfoSight for 3PAR quickstart v1.4
HPE HPE InfoSight for 3PAR quickstart v1.4HPE HPE InfoSight for 3PAR quickstart v1.4
HPE HPE InfoSight for 3PAR quickstart v1.4
Calvin Zito
 
Creating explosive real-time visuals with the Visual Effect Graph – Unite Cop...
Creating explosive real-time visuals with the Visual Effect Graph – Unite Cop...Creating explosive real-time visuals with the Visual Effect Graph – Unite Cop...
Creating explosive real-time visuals with the Visual Effect Graph – Unite Cop...
Unity Technologies
 
SR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and ImprovementSR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and Improvement
LF Events
 
Smpe
SmpeSmpe
OFI Overview 2019 Webinar
OFI Overview 2019 WebinarOFI Overview 2019 Webinar
OFI Overview 2019 Webinar
seanhefty
 
SPI Drivers
SPI DriversSPI Drivers
COSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem portingCOSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem porting
Eric Lin
 
Introduction to OFI
Introduction to OFIIntroduction to OFI
Introduction to OFI
seanhefty
 
“Seamless Deployment of Multimedia and Machine Learning Applications at the E...
“Seamless Deployment of Multimedia and Machine Learning Applications at the E...“Seamless Deployment of Multimedia and Machine Learning Applications at the E...
“Seamless Deployment of Multimedia and Machine Learning Applications at the E...
Edge AI and Vision Alliance
 
eBPF/XDP
eBPF/XDP eBPF/XDP
eBPF/XDP
Netronome
 
2017 ofi-hoti-tutorial
2017 ofi-hoti-tutorial2017 ofi-hoti-tutorial
2017 ofi-hoti-tutorial
seanhefty
 

What's hot (20)

LinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking WalkthroughLinuxCon 2015 Linux Kernel Networking Walkthrough
LinuxCon 2015 Linux Kernel Networking Walkthrough
 
Efi booting
Efi bootingEfi booting
Efi booting
 
BPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLabBPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLab
 
Effective Linux Development Using PetaLinux Tools 2017.4
Effective Linux Development Using PetaLinux Tools 2017.4Effective Linux Development Using PetaLinux Tools 2017.4
Effective Linux Development Using PetaLinux Tools 2017.4
 
OS scheduling and The anatomy of a context switch
OS scheduling and The anatomy of a context switchOS scheduling and The anatomy of a context switch
OS scheduling and The anatomy of a context switch
 
Hacking Microsoft Remote Desktop Services for Fun and Profit
Hacking Microsoft Remote Desktop Services for Fun and ProfitHacking Microsoft Remote Desktop Services for Fun and Profit
Hacking Microsoft Remote Desktop Services for Fun and Profit
 
Clear Linux OS - Architecture Overview
Clear Linux OS - Architecture OverviewClear Linux OS - Architecture Overview
Clear Linux OS - Architecture Overview
 
An Introduction to RISC-V bootflow
An Introduction to RISC-V bootflowAn Introduction to RISC-V bootflow
An Introduction to RISC-V bootflow
 
The TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux KernelThe TCP/IP Stack in the Linux Kernel
The TCP/IP Stack in the Linux Kernel
 
HPE HPE InfoSight for 3PAR quickstart v1.4
HPE HPE InfoSight for 3PAR quickstart v1.4HPE HPE InfoSight for 3PAR quickstart v1.4
HPE HPE InfoSight for 3PAR quickstart v1.4
 
Creating explosive real-time visuals with the Visual Effect Graph – Unite Cop...
Creating explosive real-time visuals with the Visual Effect Graph – Unite Cop...Creating explosive real-time visuals with the Visual Effect Graph – Unite Cop...
Creating explosive real-time visuals with the Visual Effect Graph – Unite Cop...
 
SR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and ImprovementSR-IOV ixgbe Driver Limitations and Improvement
SR-IOV ixgbe Driver Limitations and Improvement
 
Smpe
SmpeSmpe
Smpe
 
OFI Overview 2019 Webinar
OFI Overview 2019 WebinarOFI Overview 2019 Webinar
OFI Overview 2019 Webinar
 
SPI Drivers
SPI DriversSPI Drivers
SPI Drivers
 
COSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem portingCOSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem porting
 
Introduction to OFI
Introduction to OFIIntroduction to OFI
Introduction to OFI
 
“Seamless Deployment of Multimedia and Machine Learning Applications at the E...
“Seamless Deployment of Multimedia and Machine Learning Applications at the E...“Seamless Deployment of Multimedia and Machine Learning Applications at the E...
“Seamless Deployment of Multimedia and Machine Learning Applications at the E...
 
eBPF/XDP
eBPF/XDP eBPF/XDP
eBPF/XDP
 
2017 ofi-hoti-tutorial
2017 ofi-hoti-tutorial2017 ofi-hoti-tutorial
2017 ofi-hoti-tutorial
 

Similar to Python on Android with Delphi FMX - The Cross Platform GUI Framework

Introduction to Python GUI development with Delphi for Python - Part 1: Del...
Introduction to Python GUI development with Delphi for Python - Part 1:   Del...Introduction to Python GUI development with Delphi for Python - Part 1:   Del...
Introduction to Python GUI development with Delphi for Python - Part 1: Del...
Embarcadero Technologies
 
PyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdfPyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdf
Embarcadero Technologies
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
wesley chun
 
EKON 25 Python4Delphi_mX4
EKON 25 Python4Delphi_mX4EKON 25 Python4Delphi_mX4
EKON 25 Python4Delphi_mX4
Max Kleiner
 
EclipseCon Europe 2012 Tabris Workshop
EclipseCon Europe 2012 Tabris WorkshopEclipseCon Europe 2012 Tabris Workshop
EclipseCon Europe 2012 Tabris Workshop
Holger Staudacher
 
"The F# Path to Relaxation", Don Syme
"The F# Path to Relaxation", Don Syme"The F# Path to Relaxation", Don Syme
"The F# Path to Relaxation", Don Syme
Fwdays
 
Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitc
benDesigning
 
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Amanda Lam
 
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXo Platform
 
Some wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily useSome wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily use
arun.arwachin
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3
Asher Martin
 
INTRODUCTION TO FLUTTER BASICS.pptx
INTRODUCTION TO FLUTTER BASICS.pptxINTRODUCTION TO FLUTTER BASICS.pptx
INTRODUCTION TO FLUTTER BASICS.pptx
20TUCS033DHAMODHARAK
 
How to develop a Flutter app.pdf
How to develop a Flutter app.pdfHow to develop a Flutter app.pdf
How to develop a Flutter app.pdf
Smith Daniel
 
Flutter
FlutterFlutter
Better Code: Concurrency
Better Code: ConcurrencyBetter Code: Concurrency
Better Code: Concurrency
Platonov Sergey
 
Golang
GolangGolang
Golang
GolangGolang
Абрамович Максим, "Rad studio xe4"
Абрамович Максим, "Rad studio xe4"Абрамович Максим, "Rad studio xe4"
Абрамович Максим, "Rad studio xe4"
EPAM Systems
 
Introduction to PHP (SDPHP)
Introduction to PHP   (SDPHP)Introduction to PHP   (SDPHP)
Introduction to PHP (SDPHP)
Eric Johnson
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
pprem
 

Similar to Python on Android with Delphi FMX - The Cross Platform GUI Framework (20)

Introduction to Python GUI development with Delphi for Python - Part 1: Del...
Introduction to Python GUI development with Delphi for Python - Part 1:   Del...Introduction to Python GUI development with Delphi for Python - Part 1:   Del...
Introduction to Python GUI development with Delphi for Python - Part 1: Del...
 
PyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdfPyTorch for Delphi - Python Data Sciences Libraries.pdf
PyTorch for Delphi - Python Data Sciences Libraries.pdf
 
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud RunDesigning flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
Designing flexible apps deployable to App Engine, Cloud Functions, or Cloud Run
 
EKON 25 Python4Delphi_mX4
EKON 25 Python4Delphi_mX4EKON 25 Python4Delphi_mX4
EKON 25 Python4Delphi_mX4
 
EclipseCon Europe 2012 Tabris Workshop
EclipseCon Europe 2012 Tabris WorkshopEclipseCon Europe 2012 Tabris Workshop
EclipseCon Europe 2012 Tabris Workshop
 
"The F# Path to Relaxation", Don Syme
"The F# Path to Relaxation", Don Syme"The F# Path to Relaxation", Don Syme
"The F# Path to Relaxation", Don Syme
 
Open frameworks 101_fitc
Open frameworks 101_fitcOpen frameworks 101_fitc
Open frameworks 101_fitc
 
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
 
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXoer on the grill: eXo Add-ons factory using Docker and Codenvy
eXoer on the grill: eXo Add-ons factory using Docker and Codenvy
 
Some wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily useSome wonderful Linux softwares for daily use
Some wonderful Linux softwares for daily use
 
Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3Cape Cod Web Technology Meetup - 3
Cape Cod Web Technology Meetup - 3
 
INTRODUCTION TO FLUTTER BASICS.pptx
INTRODUCTION TO FLUTTER BASICS.pptxINTRODUCTION TO FLUTTER BASICS.pptx
INTRODUCTION TO FLUTTER BASICS.pptx
 
How to develop a Flutter app.pdf
How to develop a Flutter app.pdfHow to develop a Flutter app.pdf
How to develop a Flutter app.pdf
 
Flutter
FlutterFlutter
Flutter
 
Better Code: Concurrency
Better Code: ConcurrencyBetter Code: Concurrency
Better Code: Concurrency
 
Golang
GolangGolang
Golang
 
Golang
GolangGolang
Golang
 
Абрамович Максим, "Rad studio xe4"
Абрамович Максим, "Rad studio xe4"Абрамович Максим, "Rad studio xe4"
Абрамович Максим, "Rad studio xe4"
 
Introduction to PHP (SDPHP)
Introduction to PHP   (SDPHP)Introduction to PHP   (SDPHP)
Introduction to PHP (SDPHP)
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
 

More from Embarcadero Technologies

Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...
Embarcadero Technologies
 
Linux GUI Applications on Windows Subsystem for Linux
Linux GUI Applications on Windows Subsystem for LinuxLinux GUI Applications on Windows Subsystem for Linux
Linux GUI Applications on Windows Subsystem for Linux
Embarcadero Technologies
 
FMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxFMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for Linux
Embarcadero Technologies
 
RAD Industrial Automation, Labs, and Instrumentation
RAD Industrial Automation, Labs, and InstrumentationRAD Industrial Automation, Labs, and Instrumentation
RAD Industrial Automation, Labs, and Instrumentation
Embarcadero Technologies
 
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBaseEmbeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase
Embarcadero Technologies
 
Rad Server Industry Template - Connected Nurses Station - Setup Document
Rad Server Industry Template - Connected Nurses Station - Setup DocumentRad Server Industry Template - Connected Nurses Station - Setup Document
Rad Server Industry Template - Connected Nurses Station - Setup Document
Embarcadero Technologies
 
TMS Google Mapping Components
TMS Google Mapping ComponentsTMS Google Mapping Components
TMS Google Mapping Components
Embarcadero Technologies
 
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinarMove Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Embarcadero Technologies
 
Useful C++ Features You Should be Using
Useful C++ Features You Should be UsingUseful C++ Features You Should be Using
Useful C++ Features You Should be Using
Embarcadero Technologies
 
Getting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidGetting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and Android
Embarcadero Technologies
 
Embarcadero RAD server Launch Webinar
Embarcadero RAD server Launch WebinarEmbarcadero RAD server Launch Webinar
Embarcadero RAD server Launch Webinar
Embarcadero Technologies
 
ER/Studio 2016: Build a Business-Driven Data Architecture
ER/Studio 2016: Build a Business-Driven Data ArchitectureER/Studio 2016: Build a Business-Driven Data Architecture
ER/Studio 2016: Build a Business-Driven Data Architecture
Embarcadero Technologies
 
The Secrets of SQL Server: Database Worst Practices
The Secrets of SQL Server: Database Worst PracticesThe Secrets of SQL Server: Database Worst Practices
The Secrets of SQL Server: Database Worst Practices
Embarcadero Technologies
 
Driving Business Value Through Agile Data Assets
Driving Business Value Through Agile Data AssetsDriving Business Value Through Agile Data Assets
Driving Business Value Through Agile Data Assets
Embarcadero Technologies
 
Troubleshooting Plan Changes with Query Store in SQL Server 2016
Troubleshooting Plan Changes with Query Store in SQL Server 2016Troubleshooting Plan Changes with Query Store in SQL Server 2016
Troubleshooting Plan Changes with Query Store in SQL Server 2016
Embarcadero Technologies
 
Great Scott! Dealing with New Datatypes
Great Scott! Dealing with New DatatypesGreat Scott! Dealing with New Datatypes
Great Scott! Dealing with New Datatypes
Embarcadero Technologies
 
Agile, Automated, Aware: How to Model for Success
Agile, Automated, Aware: How to Model for SuccessAgile, Automated, Aware: How to Model for Success
Agile, Automated, Aware: How to Model for Success
Embarcadero Technologies
 
What's New in DBArtisan and Rapid SQL 2016
What's New in DBArtisan and Rapid SQL 2016What's New in DBArtisan and Rapid SQL 2016
What's New in DBArtisan and Rapid SQL 2016
Embarcadero Technologies
 
Is This Really a SAN Problem? Understanding the Performance of Your IO Subsy...
Is This Really a SAN Problem? Understanding the Performance of  Your IO Subsy...Is This Really a SAN Problem? Understanding the Performance of  Your IO Subsy...
Is This Really a SAN Problem? Understanding the Performance of Your IO Subsy...
Embarcadero Technologies
 
RAD Studio, Delphi and C++Builder 10 Feature Matrix
RAD Studio, Delphi and C++Builder 10 Feature MatrixRAD Studio, Delphi and C++Builder 10 Feature Matrix
RAD Studio, Delphi and C++Builder 10 Feature Matrix
Embarcadero Technologies
 

More from Embarcadero Technologies (20)

Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...
Android on Windows 11 - A Developer's Perspective (Windows Subsystem For Andr...
 
Linux GUI Applications on Windows Subsystem for Linux
Linux GUI Applications on Windows Subsystem for LinuxLinux GUI Applications on Windows Subsystem for Linux
Linux GUI Applications on Windows Subsystem for Linux
 
FMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for LinuxFMXLinux Introduction - Delphi's FireMonkey for Linux
FMXLinux Introduction - Delphi's FireMonkey for Linux
 
RAD Industrial Automation, Labs, and Instrumentation
RAD Industrial Automation, Labs, and InstrumentationRAD Industrial Automation, Labs, and Instrumentation
RAD Industrial Automation, Labs, and Instrumentation
 
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBaseEmbeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase
Embeddable Databases for Mobile Apps: Stress-Free Solutions with InterBase
 
Rad Server Industry Template - Connected Nurses Station - Setup Document
Rad Server Industry Template - Connected Nurses Station - Setup DocumentRad Server Industry Template - Connected Nurses Station - Setup Document
Rad Server Industry Template - Connected Nurses Station - Setup Document
 
TMS Google Mapping Components
TMS Google Mapping ComponentsTMS Google Mapping Components
TMS Google Mapping Components
 
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinarMove Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinar
 
Useful C++ Features You Should be Using
Useful C++ Features You Should be UsingUseful C++ Features You Should be Using
Useful C++ Features You Should be Using
 
Getting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidGetting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and Android
 
Embarcadero RAD server Launch Webinar
Embarcadero RAD server Launch WebinarEmbarcadero RAD server Launch Webinar
Embarcadero RAD server Launch Webinar
 
ER/Studio 2016: Build a Business-Driven Data Architecture
ER/Studio 2016: Build a Business-Driven Data ArchitectureER/Studio 2016: Build a Business-Driven Data Architecture
ER/Studio 2016: Build a Business-Driven Data Architecture
 
The Secrets of SQL Server: Database Worst Practices
The Secrets of SQL Server: Database Worst PracticesThe Secrets of SQL Server: Database Worst Practices
The Secrets of SQL Server: Database Worst Practices
 
Driving Business Value Through Agile Data Assets
Driving Business Value Through Agile Data AssetsDriving Business Value Through Agile Data Assets
Driving Business Value Through Agile Data Assets
 
Troubleshooting Plan Changes with Query Store in SQL Server 2016
Troubleshooting Plan Changes with Query Store in SQL Server 2016Troubleshooting Plan Changes with Query Store in SQL Server 2016
Troubleshooting Plan Changes with Query Store in SQL Server 2016
 
Great Scott! Dealing with New Datatypes
Great Scott! Dealing with New DatatypesGreat Scott! Dealing with New Datatypes
Great Scott! Dealing with New Datatypes
 
Agile, Automated, Aware: How to Model for Success
Agile, Automated, Aware: How to Model for SuccessAgile, Automated, Aware: How to Model for Success
Agile, Automated, Aware: How to Model for Success
 
What's New in DBArtisan and Rapid SQL 2016
What's New in DBArtisan and Rapid SQL 2016What's New in DBArtisan and Rapid SQL 2016
What's New in DBArtisan and Rapid SQL 2016
 
Is This Really a SAN Problem? Understanding the Performance of Your IO Subsy...
Is This Really a SAN Problem? Understanding the Performance of  Your IO Subsy...Is This Really a SAN Problem? Understanding the Performance of  Your IO Subsy...
Is This Really a SAN Problem? Understanding the Performance of Your IO Subsy...
 
RAD Studio, Delphi and C++Builder 10 Feature Matrix
RAD Studio, Delphi and C++Builder 10 Feature MatrixRAD Studio, Delphi and C++Builder 10 Feature Matrix
RAD Studio, Delphi and C++Builder 10 Feature Matrix
 

Recently uploaded

Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Precisely
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
Neo4j
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 

Recently uploaded (20)

Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Leveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and StandardsLeveraging the Graph for Clinical Trials and Standards
Leveraging the Graph for Clinical Trials and Standards
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 

Python on Android with Delphi FMX - The Cross Platform GUI Framework

  • 1. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Jim McKeeth Chief Developer Advocate Embarcadero Technologies jim.mckeeth@embarcadero.com @JimMcKeeth Slides, links & replay: blogs.embarcadero.com/?p=130176 Python on Android with Delphi FMX The Cross Platform GUI Framework Part 2
  • 2. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Agenda • Introduction to Delphi FMX • Architecture and platforms • Installing and using Delphi FMX for Python • Demonstrations & Code • Python on Android • Going Beyond - Mixing Delphi & Python • More information, Next steps, Q&A Slides, links & replay: blogs.embarcadero.com/?p=130176
  • 3. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company About Jim McKeeth ● Chief Developer Advocate & Engineer for Embarcadero ● Long time software developer ○ Delphi, C/C++, Python, Java, JavaScript, Ruby, etc. ● Invented and patented pattern and swipe to unlock ○ e.g. US Patents # 8352745 & 6766456 ● Built thought controlled drone with Google Glass and wireless EEG headset ● Contributor to Internet of Things and Data Analytics Handbook ● Blogger, podcaster, conference speaker, webinar host, etc. ● Twitter, TikTok, YouTube, etc. @JimMcKeeth
  • 4. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Who are you? ● Python devs who want a nice GUI ● Python devs curious about Delphi ● Delphi devs who want to use Python ● Delphi devs curious about what’s new ● Other devs curious about Delphi & Python I’ll do my best not to assume too much familiarity with either Delphi or Python, but also include code and technical details.
  • 5. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company It’s not a Competition ● Developers have multiple tools on their workbench ● It is about finding the right tool for each task ● Having specialized tools for different tasks doesn’t detract from favorite tools ● You can always find a specific task that another tool is better for, but no one tool is that best for all tasks.
  • 6. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company What is Delphi for Python? ● Set of free Python modules bringing Delphi’s GUI libraries to Python developers ○ Mature, feature rich, native & cross-platform ○ Does not require Delphi to use ● Based on the open source Python4Delphi (same technology that powers the PyScripter IDE) ● Available today on GitHub & PyPi ○ Currently in beta, but ready for use ● DelphiVCL for Python supports Windows (32-bit & 64-bit) ● DelphiFMX for Python adds Linux, Android, & Mac OS ● Part of a bidirectional bridge between Delphi and Python
  • 7. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Dissecting the Technology Stacks A compiled general-purpose programming stack (IDE + Compiler + Libraries) introduced in 1995 as the successor to Turbo Pascal. Delphi Delphi VCL for Python Delphi FMX for Python Python module for Windows GUI development. Python module for cross platform GUI development. Visual Component Library (VCL) Delphi Library for Windows GUI development FireMonkey (FMX) Delphi Library for cross-platform GUI development Python4Delphi Open-source bidirectional bridge combining Delphi and Python Free and commercial licenses with source. Open source. Free to use, modify, and redistribute. An interpreted high-level general-purpose programming language. Introduced in 1991 as the successor to ABC. Python
  • 8. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company FMX The Cross-Platform FireMonkey Framework ● Takes advantage of GPU libraries to provide a hardware accelerated, rich user interface that is fast and looks great across multiple platforms: ○ Windows, macOS, iOS, Android, and Linux ○ Uses DirectX on Windows, OpenGL on Linux, OpenGL-ES on Android, and Metal on iOS and macOS ● Similar to VCL, but not designed to be compatible ○ Designed as cross platform from the ground up ● Integrated GPU effects, animations, and robust styling system ● Platform services abstract the access to platform hardware and functionality to intelligently adapt the UI & UX to platform specifics ● Very flexible component system - do more with fewer components (nestable & styleable)
  • 9. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Getting Started with Delphi FMX for Python Rich GUI Framework for Python on Windows, Mac, Linux, & Android
  • 10. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Delphi for Python ● Windows 32-bit and 64-bit only ● Windows 8.1 through Windows 11 ○ (Earlier versions may work, but not supported.) ● Based on native Windows components ● Includes Windows Handles, Messages, Accessibility, etc. ● Styling system ● Uses GPU for custom rendering ● Multi-platform for Windows, Linux, Android, and Mac OS ● Higher level of abstraction ● Platform services simplifies behaviors ● Styling system Delphi VCL for Python Delphi FMX for Python Covered in Part 1
  • 11. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Delphi FMX for Python Installation ● Install via pip ○ pip install delphifmx ● Supports: ○ Win32 x86, Win64 x86, Linux64 x86, Android64, Mac OS x64 (Intel) and Mac M1 (Arm) architectures ○ Python cp3.6, cp3.7, cp3.8, cp3.9 and cp3.10 (excluding cp3.6 on Linux and macOS) ● Conda support: ○ Win x86 and x64 from Python cp3.6 to cp3.10 ○ Linux x86_64 from Python cp3.7 to cp3.9 (Recommended!) ○ macOS not supported yet ● Details and downloads ○ github.com/Embarcadero/DelphiFMX4Python ○ pypi.org/project/delphifmx/
  • 12. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Hello Delphi FMX for Python
  • 13. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Hello World from delphifmx import * Application.Initialize() Application.Title = "Hello Delphi FMX" Application.MainForm = Form(Application) Application.MainForm.SetProps(Caption = "Hello World") msg = Label(Application.MainForm) msg.SetProps(Parent = Application.MainForm, Text = "Hello Python from Delphi FMX", Position = Position(PointF(20, 20)), Width = 200) Application.MainForm.Show() Application.Run() # This is the main loop Application.MainForm.Destroy() The simplest example Configure the form Create and configure the label Show the form and start the main loop Configure the Application https://github.com/Embarcadero/DelphiFMX4Python/blob/main/samples/Simplest.py
  • 14. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company from delphifmx import * class HelloForm(Form): def __init__(self, owner): self.SetProps(Caption = "Hello Python", Position = "poScreenCenter", OnShow = self.__form_show) self.hello = Label(self) self.hello.SetProps(Parent = self, Text = "Hello Python from Delphi FMX", Position = Position(PointF(20, 20)), Width = 200) self.clickme = Button(self) self.clickme.SetProps(Parent = self, Text = "Click Me", Position = Position(PointF(20, 50)), OnClick = self.__button_click) def __form_show(self, sender): self.SetProps(Width = 300, Height = 400) def __button_click(self, sender): self.hello.Text = "Thanks!" self.Width = 300 def main(): Application.Initialize() Application.Title = "Hello Delphi FMX" Application.MainForm = HelloForm(Application) Application.MainForm.Show() Application.Run() Application.MainForm.Destroy() if __name__ == '__main__': main() Hello World An Object Oriented example HelloForm is an FMX Form object Button has an event handler assigned Event handler for button click Show the form and start the main loop https://github.com/Embarcadero/DelphiFMX4Python/blob/main/samples/HelloDelphiFMX.py
  • 15. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company from delphifmx import * from os.path import exists class HelloForm(Form): def __init__(self, owner): self.SetProps(Caption = "My To Do List", OnShow = self.__form_show, OnClose = self.__form_close) self.hello = Label(self) self.hello.SetProps(Parent = self, Text = "Next Do: ", Position = Position(PointF(20, 20))) self.edit = Edit(self) self.edit.SetProps(Parent = self, Position = Position(PointF(80,18))) self.clickme = Button(self) self.clickme.SetProps(Parent = self, Text = "Add", Position = Position(PointF(190, 18)), Width = 80, OnClick = self.__button_click) self.list = ListBox(self) self.list.SetProps(Parent = self, Position = Position(PointF(20, 60)), Width = 250, OnClick = self.__list_item_click) def __list_item_click(self, sender): if (self.list.itemindex > -1): self.list.items.delete(self.list.itemindex) def __form_show(self, sender): self.SetProps(Width = 300, Height = 320) if exists("todo.txt"): self.list.items.loadfromfile("todo.txt") def __form_close(self, sender, action): self.list.items.savetofile("todo.txt") action = "caFree" def __button_click(self, sender): self.list.items.add(self.edit.text) self.edit.text = "" ToDo App Starting to get useful…. Left main() off for space. https://github.com/Embarcadero/DelphiFMX4Python/blob/main/samples/ToDoList.py
  • 16. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company With Style And more controls https://github.com/Embarcadero/DelphiFMX4Python/tree/main/samples/ControlsDesktop StyleManager().SetStyle( StyleStreaming().LoadFromFile("StyleFile.style")) Load and apply style Embarcadero is working on a free style bundle for Python
  • 17. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company ● Take full advantage of the Delphi IDE designers and property editors ● WYSIWYG preview with styles ● Export the form for use in Python then write Python code ● Just right-click and export with the IDE add-in ● Works with any Delphi edition requires no Object Pascal ● github.com/Embarcadero/DelphiFMX4Python/tree/main/experts ● Currently uses a binary .pydfm file, but text version coming Desig Your UI in the Delphi IDE
  • 18. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Exported from Delphi’s FMX Designers to Python with Styles
  • 19. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Exported from Delphi’s FMX Designers to Python with Styles and Animations Native Delphi on Windows Pure Cross-Platform Python App The spinning animations are just because I could…
  • 20. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Deploying Python to Android Yes, Python on Android!
  • 21. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Fundamentals ● Delphi FMX supports Android ARM64 as a target ● The Python4Delphi library supports Android ● Allows building Delphi app to run Python on Android Solution ● A pre-built Delphi application with Python enabled ● User modifiable Python script payload that runs automatically ● Automated tool to modify the Android Manifest and build final APK ○ On GitHub github.com/Embarcadero/PythonFMXBuilder (alpha?) ○ Or resign modified APK manually To Do ● Live preview before deploying to Android ● Bundling multiple Python scripts & modules ● Customize icons, splash screens, loading, etc. ● More testing, debugging, and your suggestions…. The Architecture
  • 22. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Running Python on Android ● Delphi compiles natively for Android ● The Python runtime is embedded into the app ● Python is dynamically interpreted and executed at runtime ● All of Delphi FMX for Python is available ● Supports additional Python modules ● Completely local - no network access necessary
  • 23. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company github.com/Embarcadero/PythonFMXBuilder
  • 24. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Going Further… Exploring the Delphi for Python Bridge
  • 25. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Customizing Python on Android Take your app further with Delphi
  • 26. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Combine Delphi and Python ● The Python4Delphi library is a bidirectional bridge ● Develop parts of your solution in Delphi, and part in Python ○ Play to the strengths of each ● Merge them together into a single cohesive solution ● Find samples, tutorials, and videos ○ github.com/pyscripter/python4delphi
  • 27. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Use Delphi to Create Native Python Modules ● Many Python modules are written in C/C++ and natively compiled ● Delphi also creates natively compiled Python modules via Python4Delphi ● Prototype rapidly in Python, and then create optimized modules in Delphi to clear bottlenecks ● Much like Python, Delphi code is focused on readability and clear structure and may be easier for you than using C/C++ ● Augment your use of PyPy or Cython
  • 28. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Documentation and Library References ● Main Delphi documentation ○ Main docwiki.embarcadero.com/RADStudio/en/ ○ VCL docwiki.embarcadero.com/RADStudio/en/VCL_Overview ○ FMX docwiki.embarcadero.com/RADStudio/en/FireMonkey ● Library Reference ○ Main docwiki.embarcadero.com/Libraries/en/ ○ VCL docwiki.embarcadero.com/Libraries/en/Vcl ○ FMX docwiki.embarcadero.com/Libraries/en/FMX ● Delphi prefixes type names with a “T” ○ TEdit in Delphi is an Edit in Python ○ It is just a naming convention
  • 29. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company About PyScripter ● Popular open-source Python IDE sponsored by Embarcadero ● All the features expected in a modern Python IDE while being lightweight and very fast ● Natively compiled for Windows to use minimal memory with maximum performance ● Full Python debugging with remote debugging ● Integration with Python tools like PyLint, TabNanny, Profile, etc. ● Run or debug files from memory. ● embarcadero.com/free-tools/pyscripter/free-download
  • 30. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company About UltraEdit ● High performance text editor for programmers. ● Industry's best large file handling: 10+ GB and beyond. ● Syntax highlighting for nearly any language or data format. ● Smart templates. ● Hex editing. Column / block mode editing. ● Part of Idera family of developer tools. ● ultraedit.com/products/ultraedit/
  • 31. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Next Steps ● Install Delphi FMX for Python github.com/Embarcadero/DelphiFMX4Python ○ See the samples, Star the Repository, file issues, and make feature requests ● Read the blog post (links, replays) blogs.embarcadero.com/?p=130176 ● See part 1 on Delphi VCL blogs.embarcadero.com/?p=128183 ● Start a 30-day Delphi trial embarcadero.com/products/delphi/start-for-free ● Subscribe on YouTube youtube.com/c/EmbarcaderoTechnologies ● Follow us on Twitter twitter.com/embarcaderotech ● Like us on Facebook facebook.com/embarcaderotech ● Follow us on LinkedIn linkedin.com/company/embarcadero-technologies ● Read our blog pythongui.org
  • 32. Delphi for Python Copyright © 2022 by Embarcadero, an Idera company Jim McKeeth Chief Developer Advocate Embarcadero Technologies jim.mckeeth@embarcadero.com @JimMcKeeth Slides, links & replay: blogs.embarcadero.com/?p=130176 Python on Android with Delphi FMX The Cross Platform GUI Framework Part 2 Q&A