CQL 教程/中文适配子包/CQPyqt 桌面 GUI

CQPyqt 桌面 GUI

用全中文 API 开发桌面图形界面:控件、布局、信号槽与对话框,底层基于 PySide6。

22.1简介

CQPyqt 是基于 PySide6 的中文适配,提供中文控件类、方法、信号与常量。安装方式:

bash
cd cql-lang
pip install .[desktop]     # 安装 CQPyqt:PySide6
  • 所有控件、布局、对话框、信号与常用常量都有中文名称。
  • 未在静态导出中的 Qt 类可通过中文类名直接访问(如 cqpyqt.线程 对应 QThread),映射表见 cqpyqt.names,可自行扩充。

22.2快速开始

参考 examples/gui_hello.cql,一个带标签与按钮的简单窗口:

cql
# -*- coding: utf-8 -*-
# gui_hello.cql
# 运行方式(需图形界面):cql run examples/gui_hello.cql
# 无图形界面环境可用离屏模式验证:
#     $env:QT_QPA_PLATFORM="offscreen"
#     cql run examples/gui_hello.cql

从 CQPyqt 导入 应用程序, 主窗口, 按钮, 标签, 垂直布局

应用 = 应用程序([])
窗口 = 主窗口()
窗口.设置窗口标题("CQL 桌面示例")

标签控件 = 标签("点击按钮试试")
按钮控件 = 按钮("点我")

函数 处理点击():
    标签控件.设置文本("被点击了!")

按钮控件.被点击.连接(处理点击)

布局 = 垂直布局()
布局.添加控件(标签控件)
布局.添加控件(按钮控件)
窗口.设置布局(布局)
窗口.设置大小(300, 200)
窗口.显示()
应用.执行()

运行后会出现一个标题为「CQL 桌面示例」的窗口,点击「点我」按钮,标签文本会变为「被点击了!」。要点:

  • 必须先创建 应用程序([]),再创建控件与窗口。
  • 按钮控件.被点击.连接(处理点击) 是中文信号槽写法,连接函数作为回调。
  • 最后 窗口.显示() + 应用.执行() 进入事件循环。

22.3常用控件

中文类底层主要中文方法 / 信号
应用程序([])QApplication执行()、退出()、处理事件()
主窗口()QMainWindow设置中央控件()、设置菜单栏()、设置状态栏()
对话框()QDialog执行()、接受 / 拒绝 信号
控件()QWidget显示()、隐藏()、设置启用()、设置样式() 等通用方法
按钮("文本")QPushButton设置文本()、被点击 信号
标签("文本")QLabel设置文本()、设置对齐()
单行输入框()QLineEdit获取文本()、设置占位文本()、设置密码模式()、文本改变 信号
多行输入框()QTextEdit获取文本()、追加文本()
复选框()QCheckBox设置选中()、是否选中()
单选按钮()QRadioButton设置选中()、是否选中()
下拉框()QComboBox添加项()、获取当前文本()、当前文本改变 信号
滑动条()QSlider设置值()、获取值()、设置范围()
进度条()QProgressBar设置值()、设置范围()
数字输入框()QSpinBox设置值()、设置前缀()
选项卡()QTabWidget添加页()、设置当前索引()
表格()QTableWidget设置表头()、设置单元格文本()、项被点击 信号
列表()QListWidget添加项()、获取当前项文本()

所有控件继承的通用方法还有:关闭()是否启用()设置可见()设置窗口标题()设置大小()移动()设置样式()设置布局()设置工具提示()设置字体()设置窗口图标()设置属性()获取属性() 等约 30 个。

22.4布局与信号

布局:垂直布局 / 水平布局 / 网格布局 / 表单布局,均可使用 添加控件 / 添加布局 / 添加拉伸 / 设置间距 / 设置边距 / 移除控件 / 清空

cql
从 CQPyqt 导入 垂直布局, 水平布局, 网格布局, 表单布局, 定时器

布局 = 垂直布局()
布局.添加控件(按钮1)
布局.添加控件(按钮2)
布局.添加拉伸()

信号:中文信号名通过实例访问,返回包装对象,支持连接 / 断开 / 手动发射:

cql</