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中实现Javascript的escape()函数代码
Aug 08 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
用Simple Excel导出xls实现方法
Dec 06 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
PHP MVC框架路由学习笔记
Mar 02 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
Apr 04 PHP
老生常谈PHP数组函数array_merge(必看篇)
May 25 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
php 使用expat方式解析xml文件操作示例
Nov 26 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 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
PHP 变量定义和变量替换的方法
2009/07/30 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
浅析PHP开发规范
2018/02/05 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
js Math 对象的方法
2013/09/01 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
vue中element-ui表格缩略图悬浮放大功能的实例代码
2018/06/26 Javascript
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
实例说明Python中比较运算符的使用
2015/05/13 Python
Python下Fabric的简单部署方法
2015/07/14 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
python版飞机大战代码分享
2018/11/20 Python
Python元组知识点总结
2019/02/18 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
2021/01/15 Python
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
nohup的用法
2014/08/10 面试题
Java语言的优势
2015/01/10 面试题
竞聘副主任科员演讲稿
2014/01/11 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
MySQL kill不掉线程的原因
2021/05/07 MySQL
MySQL GRANT用户授权的实现
2021/06/18 MySQL
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP