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 相关文章推荐
Ajax PHP分页演示
Jan 02 PHP
php设计模式 DAO(数据访问对象模式)
Jun 26 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
Nov 10 PHP
php数据库配置文件一般做法分享
Jul 07 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
Jun 03 PHP
PHP中鲜为人知的10个函数
Feb 28 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 PHP
PHP实现统计在线人数功能示例
Oct 15 PHP
PHP下 Mongodb 连接远程数据库的实例代码
Aug 30 PHP
laravel 框架结合关联查询 when()用法分析
Nov 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实现的通用图片处理类
2015/03/24 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
深入研究React中setState源码
2017/11/17 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
2018/03/02 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
Python中捕捉详细异常信息的代码示例
2014/09/18 Python
Python创建模块及模块导入的方法
2015/05/27 Python
利用Python如何生成便签图片详解
2018/07/09 Python
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
python实现基于朴素贝叶斯的垃圾分类算法
2019/07/09 Python
YUV转为jpg图像的实现
2019/12/09 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
高级文秘工作总结的自我评价
2013/09/28 职场文书
保密工作整改报告
2014/11/06 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
vue引入Excel表格插件的方法
2021/04/28 Vue.js