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输出控制功能在简繁体转换中的应用
Oct 09 PHP
php中支持多种编码的中文字符串截取函数!
Mar 20 PHP
php中数组首字符过滤功能代码
Jul 31 PHP
两千行代码的PHP学习笔记汇总
Oct 05 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
Oct 15 PHP
PHP中使用addslashes函数转义的安全性原理分析
Nov 03 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
Nov 24 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
PHP处理大量表单字段的便捷方法
Feb 07 PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 PHP
php如何实现只替换一次或N次
Oct 29 PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 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
《OVERLORD》手游英文版即将上线 手机上也能扮演骨王
2020/04/09 日漫
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
写入cookie的JavaScript代码库 cookieLibrary.js
2009/10/24 Javascript
Jquery实现显示和隐藏的4种简单方式
2013/08/28 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
Bootstrap php制作动态分页标签
2016/12/23 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
2016/12/27 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
跟老齐学Python之关于类的初步认识
2014/10/11 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
Python决策树分类算法学习
2017/12/22 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
美国网上花店:JustFlowers
2017/02/12 全球购物
生产车间班组长岗位职责
2014/01/06 职场文书
党员干部公开承诺书
2014/03/26 职场文书
反邪教警示教育方案
2014/05/13 职场文书
审计班子对照检查材料
2014/08/27 职场文书
民主评议党员工作总结
2014/10/20 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书