Skip to content

TStatusBarDemo 项目分析

项目信息

文件结构

TStatusBarDemo/
├── 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):
        self.Button1 = Button(self)
        self.StatusBar1 = StatusBar(self)
        self.LoadProps(os.path.join(os.path.dirname(os.path.abspath(__file__)), "Unit1.pydfm"))
        self.Button1.OnClick = self.Button1Click

        # 创建 TStatusBar 控件用于显示状态信息
        self.statusBar = StatusBar(self)
        self.statusBar.SetBounds(0, 150, 400, 30)  # 设置控件的位置和大小
        self.statusBar.Parent = self  # 将控件设置为窗体的子控件

        # 初始化状态栏的面板
        self.init_status_panels()

        # 创建按钮用于更新状态栏文本
        self.btnUpdateStatus = Button(self)
        self.btnUpdateStatus.SetBounds(10, 50, 150, 30)  # 设置按钮的位置和大小
        self.btnUpdateStatus.Caption = "更新状态"  # 设置按钮文本
        self.btnUpdateStatus.OnClick = self.update_status  # 绑定点击事件
        self.btnUpdateStatus.Parent = self  # 将按钮设置为窗体的子控件

    # 初始化状态栏面板的方法
    def init_status_panels(self):
        # 添加多个面板到状态栏
        self.statusBar.Panels.Add()  # 添加第一个面板
        self.statusBar.Panels[0].Text = "面板 1"  # 设置面板文本
        self.statusBar.Panels.Add()  # 添加第二个面板
        self.statusBar.Panels[1].Text = "面板 2"  # 设置第二个面板文本
        self.statusBar.Panels.Add()  # 添加第三个面板
        self.statusBar.Panels[2].Text = "面板 3"  # 设置第三个面板文本

        # 设置面板的宽度(可选)
        self.statusBar.Panels[0].Width = 120
        self.statusBar.Panels[1].Width = 120
        self.statusBar.Panels[2].Width = 120

    # 更新状态栏文本的方法
    def update_status(self, Sender):
        # 更新状态栏面板的文本
        self.statusBar.Panels[0].Text = "更新: 面板 1"
        self.statusBar.Panels[1].Text = "更新: 面板 2"
        self.statusBar.Panels[2].Text = "更新: 面板 3"

    def Button1Click(self, Sender):
        #简单文本显示,需要将SimplePanel设置为True
        self.StatusBar1.SimplePanel = True
        self.StatusBar1.SimpleText = '这是一条状态提示'

设计文件: Unit1.sct

def Button1Click(Sender): 

设计文件: Unit1.sfm

object Form1: TForm
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 205
  ClientWidth = 382
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -15
  Font.Name = 'Segoe UI'
  Font.Style = []
  TextHeight = 20
  object StatusBar1: TStatusBar
    Left = 0
    Top = 186
    Width = 382
    Height = 19
    Panels = <>
    ExplicitLeft = 363
    ExplicitTop = 0
    ExplicitWidth = 205
  end
  object Button1: TButton
    Left = 280
    Top = 72
    Width = 91
    Height = 25
    Caption = 'SimpleText'
    TabOrder = 1
    OnClick = Button1Click
  end
end

其他文件

  • Extractor_Icon.ico
  • Project1.xml

详细分析

功能概述

GUI组件演示

使用的组件

  • Form1 (TForm)
  • StatusBar1 (TStatusBar)
  • Button1 (TButton)

技术特点

  • 包含3个GUI组件
  • 定义2个事件处理

窗体属性

  • caption: SimpleText
  • height: 205
  • width: 382

代码分析

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

定义的类: - Form1

定义的方法: - init - init_status_panels - update_status - Button1Click

事件绑定: - self.Button1.OnClick = self.Button1Click - self.btnUpdateStatus.OnClick = self.update_status # 绑定点击事件