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
NOD32 v2.70.32 简体中文封装版 提供下载了
Feb 27 PHP
非常实用的php弹出错误警告函数扩展性强
Jan 17 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 PHP
php求正负数数组中连续元素最大值示例
Apr 11 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 PHP
php中的登陆login实例代码
Jun 20 PHP
PHP实现统计所有字符在字符串中出现次数的方法
Oct 17 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 PHP
PHP多维数组指定多字段排序的示例代码
May 16 PHP
PHP7 foreach() 函数修改
Mar 09 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
2014/07/22 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
Jquery滑动门/tab切换实现方法完整示例
2020/06/05 jQuery
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
python 通过字符串调用对象属性或方法的实例讲解
2018/04/21 Python
python监控文件并且发送告警邮件
2018/06/21 Python
python 实现将字典dict、列表list中的中文正常显示方法
2018/07/06 Python
python 调试冷知识(小结)
2019/11/11 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
YOOX台湾:意大利奢侈品电商
2018/10/13 全球购物
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
自动化专业个人求职信范文
2013/12/30 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
《社戏》教学反思
2014/04/15 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
2014年网管工作总结
2014/12/11 职场文书
小学美术教学反思
2016/02/17 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL