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 select,radio和checkbox默认选择的实现方法
May 15 PHP
微信支付开发教程(一)微信支付URL配置
May 28 PHP
destoon各类调用汇总
Jun 20 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
php简单备份与还原MySql的方法
May 09 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
Oct 18 PHP
php图像处理函数imagecopyresampled用法详解
Dec 02 PHP
使用PHPStorm+XDebug搭建单步调试环境
Nov 19 PHP
PHP常见的几种攻击方式实例小结
Apr 29 PHP
php定期拉取数据对比方法实例
Sep 22 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
微博短链接算法php版本实现代码
2012/09/15 PHP
深入PHP中慎用双等于(==)的详解
2013/06/06 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
Extjs TriggerField在弹出窗口显示不出问题的解决方法
2010/01/08 Javascript
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
jQuery实现ichat在线客服插件
2014/12/29 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
vue-quill-editor富文本编辑器简单使用方法
2018/09/21 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
2018/10/09 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
python魔法方法-自定义序列详解
2016/07/21 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
AmazeUI 加载进度条的实现示例
2020/08/20 HTML / CSS
澳大利亚礼品卡商店:Gift Card Store
2019/06/24 全球购物
小学生自我评价范例
2013/09/24 职场文书
大学生村官任职感言
2014/01/09 职场文书
《一株紫丁香》教学反思
2014/02/19 职场文书
对标管理实施方案
2014/03/12 职场文书
聚美优品励志广告词
2014/03/14 职场文书
教职工代表大会主持词
2014/04/01 职场文书
供应链金融服务方案
2014/05/25 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书
安全守法证明
2015/06/23 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
2016年情人节广告语
2016/01/28 职场文书
LayUI+Shiro实现动态菜单并记住菜单收展的示例
2021/05/06 Javascript