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中通过curl smtp发送邮件
Jun 05 PHP
PHP获取文件后缀名的三个函数
Oct 15 PHP
php curl的深入解析
Jun 02 PHP
table标签的结构与合并单元格的实现方法
Jul 24 PHP
Smarty中常用变量操作符汇总
Oct 27 PHP
PHP中的随机性 你觉得自己幸运吗?
Jan 22 PHP
php制作简单模版引擎
Apr 07 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
总结对比php中的多种序列化
Aug 28 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 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冒泡排序
2014/12/30 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
关于你不想知道的所有Python3 unicode特性
2014/11/28 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
python操作excel让工作自动化
2019/08/09 Python
使用pyecharts生成Echarts网页的实例
2019/08/12 Python
python正则表达式实例代码
2020/03/03 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
python 带时区的日期格式化操作
2020/10/23 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
Java面试题及答案
2012/09/08 面试题
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
协会周年庆活动方案
2014/08/26 职场文书
优秀员工推荐材料
2014/12/20 职场文书
介绍信的写法
2015/01/31 职场文书
销售经理工作检讨书
2015/02/19 职场文书
考博导师推荐信范文
2015/03/27 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书