エンバカデロ(embarcadero)のHPで、Pythonツールというページを見つけ見ていると、VCL and FMX Libraries for Pythonが公開されていました。VCL, FMXは、RAD Studio(C++Builder/Delphi)のクラスライブラリですね。強力なGUIのライブラリも含まれており、これがなんとPythonから利用できるとの事です。
VCL and FMX Libraries for Python
VCL and FMX Libraries for Python は、PythonからVCL. FMXのフォームを使えるようにするライブラリィです。
以下、エンバカデロ(embarcadero)のHPより。
VCLとFireMonkey(FMX)は成熟したGUIライブラリで、世界各国のDelphi / C++Builderに
よって利用されています。
「DelphiVCL for Python」と「DelphiFMX for Python」は、堅牢で成熟したVCL / FMX
(FireMonkey)GUIライブラリを、Python開発者が利用できるようにしたPythonモジュール
セットです。
DelphiVCL for Pythonは、Windowsネイティブの開発にフォーカスしたライブラリで、
Windows専用のVCLフレームワークを採用しています。
一方、DelphiFMX for Pythonは、クロスプラットフォーム向けのFireMonkeyフレームワークを
採用しており、強力で柔軟なGUIフレームワークをWindows、Linux、macOS、Android向けに
利用できます。
以下のDelphi のフォームを Python から使う方法に詳しい説明がありましたので、参考にしてください。
以下のURLも参考にしてください。
Python へのインストール
VCL and FMX Libraries for Python をPython にインストールします。
VCL
pip 経由で delphivcl をインストールします。以下のURLを参照してください。
コマンドプロンプト(DOS窓)から、以下を実行します。
pip install delphivcl
FMX
pip 経由で delphifmx をインストールします。以下のURLを参照してください。
コマンドプロンプト(DOS窓)から、以下を実行します。
pip install delphifmx
サンプルコードの実行
以下のライブラリ内に、サンプルコードがありますので実行してみてください。
ドキュメント
以下の、ライブラリ内のtutorials 内にドキュメントがあります。
使用可能なコンポーネント/定義
VCL/FMXの全てのコンポーネントが使用出来るわけではないようです。
使用可能なコンポーネントは、以下のコマンドで確認することが出来ます。
VCL
以下のpythonのコマンドで、一覧を確認できます。
D:\work3>python
Python 3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from delphivcl import *
>>> dir()
以下、出力の一覧です。
一覧 | |||
---|---|---|---|
Abort | Action | ActionList | ActivityIndicator |
Application | BaseBindScopeComponent | BaseImageList | BaseLinkingBindSource |
BaseObjectBindSource | BasicAction | BasicBindComponent | Bevel |
BindComponentDelegate | BindingsList | BitBtn | Bitmap |
BoundLabel | BufferedFileStream | Button | BytesStream |
Canvas | CheckBox | Collection | ColorBox |
ComboBox | Component | ContainedAction | ContainedActionList |
ContainedBindComponent | Control | ControlBar | CreateComponent |
CustomAction | CustomActionList | CustomActivityIndicator | CustomBindingsList |
CustomControl | CustomDrawGrid | CustomEdit | CustomForm |
CustomGrid | CustomImageList | CustomLinkControlToField | CustomLinkLabel |
CustomLinkListControlToField | CustomLinkPropertyToField | CustomListControl | CustomListView |
CustomMemo | CustomMemoryStream | CustomMultiSelectListControl | CustomNumberBox |
CustomPrototypeBindSource | CustomStatusBar | CustomStyleServices | CustomTabControl |
CustomToggleSwitch | CustomTreeView | DateTimePicker | DelphiDefaultContainer |
DelphiDefaultIterator | DelphiDefaultMapping | DelphiMethod | DragImageList |
DrawGrid | Edit | FileOpenDialog | FileStream |
Form | FreeConsole | GetProcessDpiAwareness | Graphic |
GroupBox | HandleStream | Header | IDABORT |
IDCANCEL | IDCLOSE | IDCONTINUE | IDHELP |
IDIGNORE | IDNO | IDOK | IDRETRY |
IDTRYAGAIN | IDYES | Icon | Image |
ImageList | IsDpiAware | Label | LabeledEdit |
LinkControlDelegate | LinkControlToField | LinkControlToFieldDelegate | LinkLabel |
LinkListControlToField | LinkPropertyToField | LinkPropertyToFieldDelegate | ListBox |
ListItem | ListView | MB_ABORTRETRYIGNORE | MB_APPLMODAL |
MB_DEFBUTTON1 | MB_DEFBUTTON2 | MB_DEFBUTTON3 | MB_DEFBUTTON4 |
MB_HELP | MB_ICONASTERISK | MB_ICONERROR | MB_ICONEXCLAMATION |
MB_ICONHAND | MB_ICONINFORMATION | MB_ICONQUESTION | MB_ICONSTOP |
MB_ICONWARNING | MB_NOFOCUS | MB_OK | MB_OKCANCEL |
MB_RETRYCANCEL | MB_SYSTEMMODAL | MB_TASKMODAL | MB_YESNO |
MB_YESNOCANCEL | MainMenu | MediaPlayer | Memo |
MemoryStream | Menu | MenuItem | Metafile |
Monitor | Notebook | NumberBox | Object |
OpenDialog | Page | PageControl | PaintBox |
Panel | PascalInterface | PascalRecord | Persistent |
Picture | Point | PopupMenu | PrototypeBindSource |
RadioButton | RadioGroup | Rect | ResourceStream |
SaveDialog | Screen | ScrollBar | SetHighDpiAware |
SetProcessDpiAwareness | Shape | ShowMessage | Size |
SpeedButton | SpinButton | SpinEdit | Splitter |
StaticText | StatusBar | Stream | StringGrid |
StringStream | Strings | StyleInfo | StyleManager |
StyleServices | TabControl | TabSheet | Timer |
ToggleSwitch | ToolBar | ToolButton | TrackBar |
TreeNode | TreeView | VarParameter | WinControl |
annotations | builtins | doc | loader |
name | package | spec | bkAbort |
bkAll | bkCancel | bkClose | bkCustom |
bkHelp | bkIgnore | bkNo | bkOK |
bkRetry | bkYes | caFree | caHide |
caMinimize | caNone | cl3DDkShadow | cl3DLight |
clActiveBorder | clActiveCaption | clAppWorkSpace | clAqua |
clBackground | clBlack | clBlue | clBtnFace |
clBtnHighlight | clBtnShadow | clBtnText | clCaptionText |
clCream | clDefault | clDkGray | clFuchsia |
clGradientActiveCaption | clGradientInactiveCaption | clGray | clGrayText |
clGreen | clHighlight | clHighlightText | clHotLight |
clInactiveBorder | clInactiveCaption | clInactiveCaptionText | clInfoBk |
clInfoText | clLime | clLtGray | clMaroon |
clMedGray | clMenu | clMenuBar | clMenuHighlight |
clMenuText | clMoneyGreen | clNavy | clNone |
clOlive | clPurple | clRed | clScrollBar |
clSilver | clSkyBlue | clTeal | clWhite |
clWindow | clWindowFrame | clWindowText | clYellow |
crAppStart | crArrow | crCross | crDefault |
crDrag | crHSplit | crHandPoint | crHelp |
crHourGlass | crIBeam | crMultiDrag | crNo |
crNoDrop | crNone | crSQLWait | crSize |
crSizeAll | crSizeNESW | crSizeNS | crSizeNWSE |
crSizeWE | crUpArrow | crVSplit | fmCreate |
fmOpenRead | fmOpenReadWrite | fmOpenWrite | fmShareCompat |
fmShareDenyNone | fmShareDenyRead | fmShareDenyWrite | fmShareExclusive |
fsBorder | fsSurface | gdFixed | gdFocused |
gdSelected | mdNearest | mdNull | mdPrimary |
mrAbort | mrAll | mrCancel | mrIgnore |
mrNo | mrNoToAll | mrNone | mrOk |
mrRetry | mrYes | mrYesToAll | ssAlt |
ssCtrl | ssDouble | ssLeft | ssMiddle |
ssRight | ssShift |
FMX
以下のpythonのコマンドで、一覧を確認できます。
D:\work3>python
Python 3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from delphifmx import *
>>> dir()
以下、出力の一覧です。
一覧 | |||
---|---|---|---|
Abort | Action | ActionList | AdapterListView |
AniIndicator | AppearanceListView | Application | Arc |
ArcDial | BaseBindScopeComponent | BaseImageList | BaseLinkingBindSource |
BaseObjectBindSource | BaseValueRange | BasicAction | BasicBindComponent |
BindComponentDelegate | BindingsList | BitmapTrackBar | Bounds |
BufferedFileStream | BufferedLayout | Button | BytesStream |
Calendar | CalloutPanel | CalloutRectangle | CameraComponent |
CaretRectangle | CheckBox | CheckColumn | Circle |
Collection | ColorBox | ColorButton | ColorComboBox |
ColorListBox | ColorPanel | ColorPicker | ColorQuad |
Column | ComboBox | ComboColorBox | ComboEdit |
ComboEditBase | CommonCustomForm | Component | ContainedAction |
ContainedActionList | ContainedBindComponent | Control | ControlSize |
CornerButton | CreateComponent | CurrencyColumn | CustomAction |
CustomActionList | CustomBindingsList | CustomBufferedLayout | CustomButton |
CustomCalendar | CustomColorComboBox | CustomComboBox | CustomComboEdit |
CustomControlAction | CustomCornerButton | CustomDateEdit | CustomDateTimeEdit |
CustomEdit | CustomEditBox | CustomForm | CustomGrid |
CustomImageList | CustomLinkControlToField | CustomLinkListControlToField | CustomLinkPropertyToField |
CustomListBox | CustomListView | CustomMediaCodec | CustomMediaPlayerAction |
CustomMemo | CustomMemoryStream | CustomMultiView | CustomNumberColumn |
CustomPath | CustomPopupForm | CustomPopupMenu | CustomPresentedFramedScrollBox |
CustomPresentedFramedVertScrollBox | CustomPresentedHorzScrollBox | CustomPresentedScrollBox | CustomPresentedVertScrollBox |
CustomTimeEdit | CustomTrack | CustomValueRange | CustomValueRangeAction |
CustomViewAction | DateColumn | DateEdit | DateTimeColumn |
DateTimeColumnBase | DelphiDefaultContainer | DelphiDefaultIterator | DelphiDefaultMapping |
DelphiMethod | DialogService | Edit | Ellipse |
Expander | ExpanderButton | FMXBindNavigateAction | FMXBindNavigateApplyUpdates |
FMXBindNavigateCancel | FMXBindNavigateCancelUpdates | FMXBindNavigateDelete | FMXBindNavigateEdit |
FMXBindNavigateFirst | FMXBindNavigateInsert | FMXBindNavigateLast | FMXBindNavigateNext |
FMXBindNavigatePost | FMXBindNavigatePrior | FMXBindNavigateRefresh | FileExit |
FileHideApp | FileHideAppOthers | FileStream | FloatColumn |
FlowLayout | FmxObject | Form | Frame |
FramedScrollBox | FramedVertScrollBox | GetProcessDpiAwareness | GlyphColumn |
GradientEdit | Grid | GridLayout | GridPanelLayout |
GroupBox | HandleStream | HintAction | HorzScrollBox |
IDABORT | IDCANCEL | IDCLOSE | IDCONTINUE |
IDHELP | IDIGNORE | IDNO | IDOK |
IDRETRY | IDTRYAGAIN | IDYES | Image |
ImageColumn | ImageControl | ImageList | IntegerColumn |
IsDpiAware | Label | Layout | Line |
LinkControlDelegate | LinkControlToField | LinkControlToFieldDelegate | LinkListControlToField |
LinkPropertyToField | LinkPropertyToFieldDelegate | ListBox | ListBoxItem |
ListView | ListViewBase | MB_ABORTRETRYIGNORE | MB_APPLMODAL |
MB_DEFBUTTON1 | MB_DEFBUTTON2 | MB_DEFBUTTON3 | MB_DEFBUTTON4 |
MB_HELP | MB_ICONASTERISK | MB_ICONERROR | MB_ICONEXCLAMATION |
MB_ICONHAND | MB_ICONINFORMATION | MB_ICONQUESTION | MB_ICONSTOP |
MB_ICONWARNING | MB_NOFOCUS | MB_OK | MB_OKCANCEL |
MB_RETRYCANCEL | MB_SYSTEMMODAL | MB_TASKMODAL | MB_YESNO |
MB_YESNOCANCEL | MainMenu | Media | MediaPlayer |
MediaPlayerControl | MediaPlayerCurrentTime | MediaPlayerPlayPause | MediaPlayerStart |
MediaPlayerStop | MediaPlayerValue | MediaPlayerVolume | Memo |
MemoryStream | MenuBar | MenuItem | MultiView |
NumberBox | Object | ObjectViewAction | OpenDialog |
PaintBox | Panel | PascalInterface | PascalRecord |
Path | PathLabel | Persistent | Pie |
Point | PointF | Popup | PopupColumn |
PopupMenu | Position | PresentedFramedScrollBox | PresentedFramedVertScrollBox |
PresentedHorzScrollBox | PresentedListView | PresentedScrollBox | PresentedTextControl |
PresentedVertScrollBox | ProgressBar | ProgressColumn | PrototypeBindSource |
RadioButton | Rect | RectF | Rectangle |
ResourceStream | RoundRect | SaveDialog | ScaledLayout |
Screen | ScrollBar | ScrollBox | SearchBox |
Selection | SelectionPoint | SetHighDpiAware | SetProcessDpiAwareness |
Shape | Size | SizeF | SizeGrip |
SmallScrollBar | SpeedButton | SpinBox | Splitter |
StatusBar | Stream | StringColumn | StringGrid |
StringStream | Strings | StyleBook | StyleManager |
StyleStreaming | StyledControl | Switch | SysCommonAction |
TabControl | TabItem | Text | TextControl |
Thumb | TimeColumn | TimeEdit | Timer |
ToolBar | Touch | Track | TrackBar |
ValueRange | ValueRangeAction | VarParameter | VertScrollBox |
ViewAction | VirtualKeyboard | WindowClose | annotations |
builtins | doc | loader | name |
package | spec | crAppStart | crArrow |
crCross | crDefault | crDrag | crHSplit |
crHandPoint | crHelp | crHourGlass | crIBeam |
crMultiDrag | crNo | crNoDrop | crNone |
crSQLWait | crSize | crSizeAll | crSizeNESW |
crSizeNS | crSizeNWSE | crSizeWE | crUpArrow |
crVSplit | fmCreate | fmOpenRead | fmOpenReadWrite |
fmOpenWrite | fmShareCompat | fmShareDenyNone | fmShareDenyRead |
fmShareDenyWrite | fmShareExclusive | ssAlt | ssCtrl |
ssDouble | ssLeft | ssMiddle | ssRight |
ssShift |
Delphi4Python Exporter
VCL and FMX Libraries for Python を使用することで、Pythonから、VCK/FMXのフォームを呼び出すことが出来ますが、少しめんどくさいですね。RAD Studio(C++Builder/Delphi)から、Python用のコードを出力できるパッケージが用意されています。
残炎ながらRAD Studio 12 には、まだ対応していないようです。(2023/11/28現在)
インストール
Delphi4Python Exporter のインストール及び使用法につきましては、以下のプログをご覧ください。
Delphi4PythonExporter のソースコードが、GitHubで公開されています。