php7 图形用户界面GUI 开发示例


Posted in PHP onFebruary 22, 2020

本文实例讲述了php7 图形用户界面GUI 开发。分享给大家供大家参考,具体如下:

一、下载指定系统扩展

http://pecl.php.net/package/ui
http://pecl.php.net/package/ui/2.0.0/windows

由于我的系统是64位win10,php版本是7.1,所以选择7.1 Thread Safe (TS) x64,linux用户可以自行下载源码包,编译安装。

php7 图形用户界面GUI 开发示例

解压php_ui-2.0.0-7.1-ts-vc14-x64.zip,把php_ui.dll复制到你php.ini中extension_dir设置的目录,把libui.dll和pthreadVC2.dll复制到C:\Windows\System32目录下。

在php.ini中加入如下:

extension=php_ui.dll

然后重启服务,phpinfo()查看,ui扩展安装成功。

二、我们创建一个简单的计算器

<?php
use UI\Window;
use UI\Size;
use UI\Controls\Entry;
use UI\Controls\Label;
use UI\Controls\Button;
use UI\Controls\Grid;

//创建一个窗口
//参数一表示窗口标题
//参数二表示窗口大小
//参数三表示是否显示菜单
$win = new Window('简单的计算器', new Size(640, 480), true);

//创建一个文本框
//Entry::Normal 普通单行文本框
//Entry::Password 密码框
//Entry::Search 搜索框
$num1 = new Entry(Entry::Normal);
$num2 = new Entry(Entry::Normal);
$ret = new Entry(Entry::Normal);

//创建一个标签
$lab = new Label('+');

//创建一个按钮
$btn = new class('计算') extends Button {
  public function __construct($text) {
    parent::__construct($text);
  }

  protected function onClick() {
    global $num1, $num2, $ret;
    $n1 = $num1->getText();
    $n2 = $num2->getText();
    $ret->setText($n1 + $n2);
  }
};

//创建一个网格
$grid = new Grid();

//把上面的控件加入到网格布局中
$grid->append($num1, 0, 0, 1, 1, true, Grid::Center, false, Grid::Center);
$grid->append($lab, 0, 1, 1, 1, true, Grid::Center, false, Grid::Center);
$grid->append($num2, 0, 2, 1, 1, true, Grid::Center, false, Grid::Center);
$grid->append($btn, 0, 3, 1, 1, true, Grid::Center, false, Grid::Center);
$grid->append($ret, 0, 4, 1, 1, true, Grid::Center, false, Grid::Center);

//把布局加入到窗口中
$win->add($grid);

//显示窗口
$win->show();

UI\run();

在控制台下运行php脚本

> php index.php

运行结果如下:

php7 图形用户界面GUI 开发示例

三、我们创建一个常用的注册表单

<?php
use UI\Window;
use UI\Size;
use UI\Controls\Box;
use UI\Controls\Entry;
use UI\Controls\Button;
use UI\Controls\Form;
use UI\Controls\Radio;
use UI\Controls\Check;
use UI\Controls\Combo;
use UI\Controls\MultilineEntry;

//创建一个窗口
//参数一表示窗口标题
//参数二表示窗口大小
//参数三表示是否显示菜单
$win = new Window('简单的计算器', new Size(640, 480), true);

//创建一个表单
$frm = new Form();

//用户名
$user = new Entry(Entry::Normal);
$frm->append('用户名:', $user, false);

//密码
$pwd = new Entry(Entry::Password);
$frm->append('密码:', $pwd, false);

//性别(单选)
$sex = new Radio();
$sex->append("男");
$sex->append("女");
$sex->append("未知");
$frm->append('性别:', $sex, false);

//爱好(多选)
//创建一个盒子,水平排列
$loveBox = new Box(Box::Horizontal);
$love1 = new Check('看书');
$love2 = new Check('旅游');
$love3 = new Check('游戏');
//把多选控件加入盒子中
$loveBox->append($love1);
$loveBox->append($love2);
$loveBox->append($love3);
$frm->append('爱好:', $loveBox, false);

//地区(下拉框)
$area = new Combo();
$area->append("北京");
$area->append("上海");
$area->append("武汉");
$frm->append('地区:', $area, false);

//简介(多行文本)
$desc = new MultilineEntry();
$frm->append('简介:', $desc, false);

//注册按钮
$reg = new class('注册', $win) extends Button {
  protected $win;

  public function __construct($text, $win) {
    $this->win = $win;
    parent::__construct($text);
  }

  //用于重写父类的单击事件
  protected function onClick() {
    $this->win->msg('消息', '你点击了注册按钮');
  }
};
$frm->append('', $reg);

$win->add($frm);

//显示窗口
$win->show();

UI\run();

运行结果如下:

php7 图形用户界面GUI 开发示例

为了避免每次都要打命令运行php脚本,我们可以写个bat脚本来运行。

D:\amp\php7\php.exe -f D:\wwwroot\demo1\index.php
pause

注意php.exe的路径和运行脚本路径,保存为run.bat,运行结果如下:

php7 图形用户界面GUI 开发示例

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php simplexmlElement操作xml的命名空间实现代码
Jan 04 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
基于php-fpm的配置详解
Jun 03 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
Dec 22 PHP
php启用sphinx全文搜索的实现方法
Dec 24 PHP
php支付宝接口用法分析
Jan 04 PHP
php提交post数组参数实例分析
Dec 17 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
Oct 24 PHP
php curl批处理实现可控并发异步操作示例
May 09 PHP
php tpl模板引擎定义与使用示例
Aug 09 PHP
PHP判断是否是json字符串
Apr 01 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 #PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 #PHP
PHP pthreads v3下worker和pool的使用方法示例
Feb 21 #PHP
PHP pthreads v3下同步处理synchronized用法示例
Feb 21 #PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 #PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 #PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 #PHP
You might like
使用JSON实现数据的跨域传输的php代码
2011/12/20 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
Javascript 验证上传图片大小[客户端]
2009/08/01 Javascript
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
jQuery EasyUI API 中文文档 - Pagination分页
2011/09/29 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
JS传参及动态修改页面布局
2017/04/13 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
Angular.js中上传指令ng-upload的基本使用教程
2017/07/30 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
python3使用SMTP发送HTML格式邮件
2018/06/19 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
Django websocket原理及功能实现代码
2020/11/14 Python
台湾生鲜宅配:大口市集
2017/10/14 全球购物
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
人事主管的岗位职责
2013/11/16 职场文书
医校毕业生自我鉴定
2014/01/25 职场文书
小学生2014国庆节演讲稿:祖国在我心中
2014/09/21 职场文书
党员检讨书
2014/10/13 职场文书
党的群众路线教育实践活动个人整改落实情况汇报
2014/10/28 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
使用Python解决图表与画布的间距问题
2022/04/11 Python