Skip to content

TActionListDemo 项目分析

项目信息

文件结构

TActionListDemo/
├── Extractor_Icon.ico
├── Project1.py
├── Project1.xml
├── Unit1.py
├── Unit1.pydfm
├── Unit1.sct
├── Unit1.sfm

主程序文件: Project1.py

from glcl import *
from Unit1 import *

def main():
    Application.Initialize()
    Application.Title = 'Project1'
    Application.MainFormOnTaskbar = True
    Application.Icon.LoadFromFile(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Extractor_Icon.ico"))
    MainForm = Form1(Application)
    MainForm.Show()
    FreeConsole()
    Application.Run()
    MainForm.Free()

if __name__ == '__main__':
    main()

单元文件: Unit1.py

import os
from glcl import *

class Form1(Form):

    def __init__(self, owner):  # 构造函数,接收一个参数 owner
        self.ListBox1 = ListBox(self)
        self.PopupMenu1 = PopupMenu(self)
        self.MainMenu1 = MainMenu(self)
        self.ActionList1 = ActionList(self)
        self.LoadProps(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Unit1.pydfm"))
        # 注意:动作是选中ActionList然后右键弹出菜单选择Action List Editor创建
        self.actClear.OnExecute = self.actClearExecute  # 绑定清空动作的执行方法
        self.actDelete.OnExecute = self.actDeleteExecute  # 绑定删除动作的执行方法
        self.actAdd.OnExecute = self.actAddExecute  # 绑定添加动作的执行方法

    def actAddExecute(self, Sender):  # 添加水果的执行方法
        newFruit = Application.InputBox('请输入水果名', '水果', '')  # 弹出输入框请求水果名
        self.ListBox1.Items.Add(newFruit)  # 将输入的水果名添加到列表框中

    def actDeleteExecute(self, Sender):  # 删除水果的执行方法
        selIndex = self.ListBox1.ItemIndex  # 获取选中的列表项索引
        if selIndex != -1:  # 如果有选中项
            self.ListBox1.Items.Delete(selIndex)  # 从列表中删除选中的项
        else:  # 如果没有选中项
            Application.MessageBox('当前未选中水果', '提示', MB_ICONINFORMATION)  # 显示提示信息

    def actClearExecute(self, Sender):  # 清空列表的执行方法
        self.ListBox1.Clear()  # 清空列表框中的所有项

设计文件: Unit1.sct

def actAddExecute(Sender): 
def actDeleteExecute(Sender): 
def actClearExecute(Sender): 

设计文件: Unit1.sfm

object Form1: TForm
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 338
  ClientWidth = 490
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -15
  Font.Name = 'Segoe UI'
  Font.Style = []
  Menu = MainMenu1
  TextHeight = 20
  object ListBox1: TListBox
    Left = 24
    Top = 24
    Width = 441
    Height = 257
    ItemHeight = 20
    Items.Strings = (
      #33529#26524
      #39321#34121
      #33889#33796
      #30707#27060
      #30058#33540
      #21704#23494#29916
      #26586#23376
      #24067#26519
      #35199#29916)
    PopupMenu = PopupMenu1
    TabOrder = 0
  end
  object ActionList1: TActionList
    Left = 456
    Top = 296
    object actAdd: TAction
      Caption = #22686#21152#27700#26524
      OnExecute = actAddExecute
    end
    object actDelete: TAction
      Caption = #21024#38500#27700#26524
      OnExecute = actDeleteExecute
    end
    object actClear: TAction
      Caption = #28165#31354#27700#26524
      OnExecute = actClearExecute
    end
  end
  object MainMenu1: TMainMenu
    Left = 392
    Top = 296
    object MenuItem5: TMenuItem
      Caption = 'MenuItem5'
      object MenuItem10: TMenuItem
        Caption = 'MenuItem10'
      end
    end
    object MenuItem4: TMenuItem
      Caption = 'MenuItem4'
      object MenuItem9: TMenuItem
        Caption = 'MenuItem9'
      end
    end
    object MenuItem3: TMenuItem
      Caption = #32534#36753
      object MenuItem8: TMenuItem
        Action = actAdd
      end
      object MenuItem16: TMenuItem
        Action = actDelete
      end
      object MenuItem17: TMenuItem
        Action = actClear
      end
    end
    object MenuItem2: TMenuItem
      Caption = 'MenuItem2'
      object MenuItem7: TMenuItem
        Caption = 'MenuItem7'
      end
    end
    object MenuItem1: TMenuItem
      Caption = 'MenuItem1'
      object MenuItem6: TMenuItem
        Caption = 'MenuItem6'
      end
    end
  end
  object PopupMenu1: TPopupMenu
    Left = 424
    Top = 296
    object MenuItem11: TMenuItem
      Action = actAdd
    end
    object MenuItem12: TMenuItem
      Action = actDelete
    end
    object MenuItem13: TMenuItem
      Action = actClear
    end
  end
end

其他文件

  • Extractor_Icon.ico
  • Project1.xml

详细分析

功能概述

GUI组件演示

使用的组件

  • Form1 (TForm)
  • ListBox1 (TListBox)
  • ActionList1 (TActionList)
  • actAdd (TAction)
  • actDelete (TAction)
  • actClear (TAction)
  • MainMenu1 (TMainMenu)
  • MenuItem5 (TMenuItem)
  • MenuItem10 (TMenuItem)
  • MenuItem4 (TMenuItem)
  • MenuItem9 (TMenuItem)
  • MenuItem3 (TMenuItem)
  • MenuItem8 (TMenuItem)
  • MenuItem16 (TMenuItem)
  • MenuItem17 (TMenuItem)
  • MenuItem2 (TMenuItem)
  • MenuItem7 (TMenuItem)
  • MenuItem1 (TMenuItem)
  • MenuItem6 (TMenuItem)
  • PopupMenu1 (TPopupMenu)
  • MenuItem11 (TMenuItem)
  • MenuItem12 (TMenuItem)
  • MenuItem13 (TMenuItem)

技术特点

  • 包含23个GUI组件
  • 定义0个事件处理

窗体属性

  • caption: MenuItem6
  • height: 338
  • width: 490

代码分析

导入的模块: - import os - from glcl import *

定义的类: - Form1

定义的方法: - init - actAddExecute - actDeleteExecute - actClearExecute