TFormDemo 项目分析¶
项目信息¶
- 项目名称: TFormDemo
- 下载链接: TFormDemo.rar
- 分析时间: 2026-03-05
文件结构¶
TFormDemo/
├── Extractor_Icon.ico
├── Project1.py
├── Project1.xml
├── Unit1.py
├── Unit1.pydfm
├── Unit1.sct
├── Unit1.sfm
├── Unit2.py
├── Unit2.pydfm
├── Unit2.sct
├── Unit2.sfm
主程序文件: Project1.py¶
# 从 glcl 模块导入所有内容。这个模块通常包含与 Delphi VCL 组件相关的功能。
from glcl import *
# 从 Unit1 模块导入所有内容。Unit1 通常包含定义了窗体的类,比如 Form1。
from Unit1 import *
def main():
# 初始化应用程序。这个调用会设置应用程序的基本环境。
Application.Initialize()
# 设置应用程序的标题。这个标题会显示在任务栏或窗口的标题栏上。
Application.Title = 'Project1'
# 确保应用程序的主窗体在任务栏上显示。这个设置对 Windows 平台特别有效。
Application.MainFormOnTaskbar = True
# 加载应用程序的图标。图标文件的路径是相对于当前脚本文件所在目录的。
# os.path.join 函数用于拼接路径,os.path.dirname 和 os.path.abspath 函数用于获取脚本的目录。
Application.Icon.LoadFromFile(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Extractor_Icon.ico"))
# 创建一个 Form1 类的实例,并将其作为主窗体传递给 Application 对象。
MainForm = Form1(Application)
# 显示主窗体。这个调用会使主窗体可见。
MainForm.Show()
# 释放控制台。如果脚本是在一个有控制台的环境中运行,这行代码会关闭控制台窗口。
FreeConsole()
# 启动应用程序的主事件循环。这个循环会处理用户输入和其他事件,直到应用程序退出。
Application.Run()
# 当应用程序的主事件循环结束后,释放主窗体占用的资源。
MainForm.Free()
# 检查脚本是否作为主程序运行。如果是,调用 main 函数。
# 这个检查确保只有在脚本直接运行时才会执行 main 函数,而在被导入为模块时不会执行。
if __name__ == '__main__':
main()
单元文件: Unit1.py¶
import os # 导入os模块,用于处理文件和目录路径
from glcl import * # 导入glcl模块,假设它包含GUI组件和功能
from Unit2 import * # 导入Unit2模块,假设它定义了Form2类或其他所需功能
class Form1(Form):
# Form1类继承自Form类,代表一个窗体或用户界面
def __init__(self, owner):
# 初始化Form1类的实例
self.Button2 = Button(self) # 创建一个Button2实例,作为Form1的子组件
self.Button1 = Button(self) # 创建一个Button1实例,作为Form1的子组件
# 加载窗体属性,指定路径到Unit1.pydfm文件
self.LoadProps(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Unit1.pydfm"))
# 将Button2的OnClick事件关联到Button2Click方法
self.Button2.OnClick = self.Button2Click
# 将Button1的OnClick事件关联到Button1Click方法
self.Button1.OnClick = self.Button1Click
def Button1Click(self, Sender):
# Button1的点击事件处理方法
frm2 = Form2(self) # 创建Form2实例,父窗体为当前Form1
frm2.Show() # 显示Form2窗体
def Button2Click(self, Sender):
# Button2的点击事件处理方法
myForm = Form(self) # 创建一个新的Form实例,父窗体为当前Form1
myForm.Parent = self # 将新创建的窗体设置为Form1的子窗体
myForm.Caption = '代码方式创建窗体' # 设置窗体标题
myForm.Height = 200 # 设置窗体高度为200
myForm.Width = 300 # 设置窗体宽度为300
myForm.Name = 'MyForm' # 设置窗体名称为"MyForm"
myForm.BorderStyle = bsDialog # 设置窗体的边框样式为对话框样式
myForm.ShowModal() # 以模态方式显示窗体
myForm.Free() # 释放窗体资源
单元文件: Unit2.py¶
import os
from glcl import *
class Form2(Form):
def __init__(self, owner):
self.LoadProps(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Unit2.pydfm"))
设计文件: Unit1.sct¶
def Button1Click(Sender):
def Button2Click(Sender):
设计文件: Unit1.sfm¶
object Form1: TForm
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 192
ClientWidth = 270
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -15
Font.Name = 'Segoe UI'
Font.Style = []
TextHeight = 20
object Button1: TButton
Left = 24
Top = 40
Width = 139
Height = 25
Caption = #25171#24320#19968#20010#31383#20307
TabOrder = 0
OnClick = Button1Click
end
object Button2: TButton
Left = 24
Top = 120
Width = 139
Height = 25
Caption = #20195#30721#21019#24314#24182#25171#24320
TabOrder = 1
OnClick = Button2Click
end
end
设计文件: Unit2.sct¶
设计文件: Unit2.sfm¶
object Form2: TForm
Left = 0
Top = 0
Caption = 'Form2'
ClientHeight = 205
ClientWidth = 382
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -15
Font.Name = 'Segoe UI'
Font.Style = []
TextHeight = 20
end
其他文件¶
- Extractor_Icon.ico
- Project1.xml
详细分析¶
功能概述¶
GUI组件演示
使用的组件¶
- Form1 (TForm)
- Button1 (TButton)
- Button2 (TButton)
技术特点¶
- 包含3个GUI组件
- 定义2个事件处理
窗体属性¶
- caption: #20195#30721#21019#24314#24182#25171#24320
- height: 192
- width: 270
代码分析¶
导入的模块: - import os # 导入os模块,用于处理文件和目录路径 - from glcl import * # 导入glcl模块,假设它包含GUI组件和功能 - from Unit2 import * # 导入Unit2模块,假设它定义了Form2类或其他所需功能
定义的类: - Form1
定义的方法: - init - Button1Click - Button2Click
事件绑定: - self.Button2.OnClick = self.Button2Click - self.Button1.OnClick = self.Button1Click