Skip to content

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