利用Zenity构建PHP图形化应用的不二选择: clue/reactphp-zenity

利用Zenity构建PHP图形化应用的不二选择: clue/reactphp-zenity

CI Status Installs on Packagist

在现代软件开发中,命令行脚本的便捷性与图形界面(GUI)的直观性相融合,可以为用户提供更优质的体验。clue/reactphp-zenity就是这样一款神器,它让你能够在PHP世界中利用ReactPHP轻松构建桌面级GUI应用。

Zenity Example

Zenity 是一个小巧的程序,允许开发者在命令行脚本中创建简单的GTK+对话框。它已经预装在Ubuntu等基于Gnome的发行版上,无需额外安装即可使用。如果您的环境尚未包含Zenity,只需简单几步即可完成安装clue/reactphp-zenity 提供了一个易于使用的包装器,让PHP开发者能够调用Zenity,构建出美观的桌面应用程序。

快速开始示例

以下是一个快速启动示例,它会显示一个提示框询问用户名,并在获取名字后展示欢迎信息:

$launcher = new Clue\React\Zenity\Launcher();

$entry = new EntryDialog();
$entry->setText('您叫什么名字?');
$entry->setEntryText(getenv('USER')); // 使用当前用户的名称填充

$launcher->launch($entry)->then(function ($name) use ($launcher) {
    $launcher->launch(new InfoDialog('欢迎使用zenity-react,' . $name . '!'));
});

更多示例可参考项目的examples目录。

如何使用

启动器(Launcher)

Launcher 类负责发起Zenity进程并报告其状态和用户交互。依赖于react/event-loop,它支持异步工作流,允许多个对话框的同时运行以及并发进行其他I/O操作。

$launcher = new Clue\React\Zenity\Launcher();
设置Zenity路径(setBin())

默认情况下,Launcher 尝试从系统 $PATH 中找到zenity可执行文件。如果不在标准路径下,你可以通过setBin()方法指定完整路径:

$launcher->setBin('/your/custom/path/to/zenity');
等待结果(waitFor())

waitFor($dialog) 方法用于同步启动对话框,并等待Zenity返回结果。这是一个简单的阻塞API,适合快速起步,但缺少一些高级特性:

$result = $launcher->waitFor($dialog);
异步启动(launch())

launch($dialog) 方法异步启动对话框并返回一个承诺(Promise),当Zenity进程完成后将被履行。这个异步API使你能同时启动多个对话框和其他I/O任务:

$launcher->launch($dialog)->then(
    function ($result) {
        // 处理成功结果
    },
    function ($reason) {
        // 处理取消或错误
    }
);
Zenity控制(launchZen())

launchZen($dialog) 方法异步启动对话框,并返回BaseZen实例,该实例提供了在等待结果时控制Zenity过程的方法,对于某些对话类型还支持动态更新用户界面:

$zen = $launcher->launchZen($dialog);
Loop::addTimer(3.0, function () use ($zen) {
    $zen->close();
});

$zen->promise()->then(function ($result) {
    // 对话结束
});

建造者\Builder

Builder 提供了一个更为简洁的接口,常用于快速构建常见的对话框。这些方法的命名直观易懂,直接对应了Zenity的各种对话框类型。如需实现复杂功能,也可直接实例化下面列出的具体类。

应用场景与对话框

clue/reactphp-zenity 可以用于各种场合,例如命令行工具的增强,自动化流程中的用户交互,甚至是轻量级的桌面应用开发。

以下是部分可用的对话框类型及其截图和示例代码:

日历对话框(CalendarDialog)
颜色选择对话框(ColorSelectionDialog)
输入对话框(EntryDialog)
错误对话框(ErrorDialog)
文件选择对话框(FileSelectionDialog)
信息对话框(InfoDialog)
表格形式对话框(ListDialog)
菜单列表对话框(ListMenu)
单选按钮对话框(RadioButtonList)
表格对话框(Table)
通知对话框(NotificationDialog)
密码输入对话框(PasswordDialog)
进度条对话框(ProgressDialog)
提问对话框(QuestionDialog)
滑块对话框(ScaleDialog)
文本信息对话框(TextInfoDialog)
警告对话框(WarningDialog)

更多详细信息,请查阅项目的文档和示例代码

项目特点

  • 易于集成:与ReactPHP完美结合,无缝融入现有的事件驱动架构。
  • 异步处理:支持同时运行多个对话框,不会阻塞主进程。
  • 全面覆盖:几乎涵盖所有Zenity提供的对话框类型。
  • 高度自定义:大部分对话框都提供丰富的配置选项,满足各种需求。

让我们一起探索更多可能,开启PHP GUI应用的新篇章!

查看源代码 安装指南 许可证信息

  • 27
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵鹰伟Meadow

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值