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中inlcude()性能对比详解
Sep 16 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
php导出CSV抽象类实例
Sep 24 PHP
php常用的url处理函数总结
Nov 19 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
php验证码生成代码
Nov 11 PHP
php使用高斯算法实现图片的模糊处理功能示例
Nov 11 PHP
PHP调用接口用post方法传送json数据的实例
May 31 PHP
Yii2框架实现登陆添加验证码功能示例
Jul 12 PHP
PHP count()函数讲解
Feb 03 PHP
php的命名空间与自动加载实现方法
Aug 25 PHP
php判断数组是否为空的实例方法
May 10 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
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
Node.js模拟浏览器文件上传示例
2014/03/26 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
2015/08/24 Javascript
Javascript之BOM(window对象)详解
2016/05/25 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
js中apply()和call()的区别与用法实例分析
2018/08/14 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
Python多进程同步简单实现代码
2016/04/27 Python
python3+PyQt5实现柱状图
2018/04/24 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
python删除指定列或多列单个或多个内容实例
2020/06/28 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
详解HTML5 录音的踩坑之旅
2017/12/26 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
荷兰最大的儿童服装店:The Kids Republic
2019/04/13 全球购物
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
标准导师推荐信(医学类)
2013/10/28 职场文书
电脑教师的自我评价
2013/12/18 职场文书
禁烟标语大全
2014/06/11 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
MySQL日期时间函数知识汇总
2022/03/17 MySQL