TPopupMenuDemo 项目分析¶
项目信息¶
- 项目名称: TPopupMenuDemo
- 下载链接: TPopupMenuDemo.rar
- 分析时间: 2026-03-05
文件结构¶
TPopupMenuDemo/
├── 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¶
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 *
from Unit2 import *
class Form1(Form):
def __init__(self, owner):
self.PopupMenu1 = PopupMenu(self)
self.Button1 = Button(self)
self.LoadProps(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Unit1.pydfm"))
self.Button1.OnClick = self.Button1Click
self.MenuItem5.OnClick = self.MenuItem5Click
def MenuItem5Click(self, Sender):
ShowMessage('文件子菜单')
def Button1Click(self, Sender):
frm2 = Form2(self)
frm2.Show()
单元文件: 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"))
# 创建一个 TPopupMenu 对象
self.PopupMenu2 = PopupMenu(self)
# 创建菜单项
self.MenuItem1 = MenuItem(self.PopupMenu2)
self.MenuItem1.Caption = "Option 1"
self.MenuItem1.OnClick = self.OnMenuItem1Click
self.MenuItem2 = MenuItem(self.PopupMenu2)
self.MenuItem2.Caption = "Option 2"
self.MenuItem3 = MenuItem(self.PopupMenu2)
self.MenuItem3.Caption = "Option 3"
self.MenuItem3.OnClick = self.OnMenuItem3Click
# 将菜单项添加到 TPopupMenu 中
self.PopupMenu2.Items.Add(self.MenuItem1)
self.PopupMenu2.Items.Add(self.MenuItem2)
# 将二级子菜单MenuItem3添加到MenuItem2
self.MenuItem2.Add(self.MenuItem3)
# 将 PopupMenu2 赋值给窗体的 PopupMenu 属性
self.PopupMenu = self.PopupMenu2
def OnMenuItem1Click(self, Sender):
# 处理第一个菜单项点击事件
ShowMessage("Option 1 clicked")
def OnMenuItem3Click(self, Sender):
# 处理第二个菜单项点击事件
ShowMessage("Option 3 clicked")
设计文件: Unit1.sct¶
def MenuItem5Click(Sender):
def Button1Click(Sender):
设计文件: Unit1.sfm¶
object Form1: TForm
Left = 0
Top = 0
Caption = #21491#38190#31383#20307#24377#20986#33756#21333
ClientHeight = 148
ClientWidth = 277
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -15
Font.Name = 'Segoe UI'
Font.Style = []
PopupMenu = PopupMenu1
TextHeight = 20
object Button1: TButton
Left = 40
Top = 56
Width = 203
Height = 25
Caption = #20195#30721#26041#24335#21019#24314'PopupMenu'
TabOrder = 0
OnClick = Button1Click
end
object PopupMenu1: TPopupMenu
Left = 240
Top = 8
object MenuItem5: TMenuItem
Caption = #25991#20214
OnClick = MenuItem5Click
end
object MenuItem4: TMenuItem
Caption = #32534#36753
object MenuItem10: TMenuItem
Caption = #25764#38144
end
object MenuItem11: TMenuItem
Caption = #37325#20570
end
end
object MenuItem3: TMenuItem
Caption = #26597#25214
end
object MenuItem2: TMenuItem
Caption = #35270#22270
object MenuItem6: TMenuItem
Caption = #25918#22823#32534#36753#22120
end
object MenuItem7: TMenuItem
Caption = #20998#21106#32534#36753#22120
object MenuItem9: TMenuItem
Caption = 'MenuItem9'
end
end
object MenuItem8: TMenuItem
Caption = #32553#23567#32534#36753#22120
end
end
object MenuItem1: TMenuItem
Caption = 'MenuItem1'
end
end
end
设计文件: Unit2.sct¶
设计文件: Unit2.sfm¶
object Form2: TForm
Left = 0
Top = 0
Caption = 'Form2'
ClientHeight = 152
ClientWidth = 251
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)
- PopupMenu1 (TPopupMenu)
- MenuItem5 (TMenuItem)
- MenuItem4 (TMenuItem)
- MenuItem10 (TMenuItem)
- MenuItem11 (TMenuItem)
- MenuItem3 (TMenuItem)
- MenuItem2 (TMenuItem)
- MenuItem6 (TMenuItem)
- MenuItem7 (TMenuItem)
- MenuItem9 (TMenuItem)
- MenuItem8 (TMenuItem)
- MenuItem1 (TMenuItem)
技术特点¶
- 包含14个GUI组件
- 定义2个事件处理
窗体属性¶
- caption: MenuItem1
- height: 148
- width: 277
代码分析¶
导入的模块: - import os - from glcl import * - from Unit2 import *
定义的类: - Form1
定义的方法: - init - MenuItem5Click - Button1Click
事件绑定: - self.Button1.OnClick = self.Button1Click - self.MenuItem5.OnClick = self.MenuItem5Click