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