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 相关文章推荐
WINDOWS服务器安装多套PHP的另类解决方案
Oct 09 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
PHP在字符断点处截断文字的实现代码
Apr 21 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
PHP中使用memcache存储session的三种配置方法
Apr 05 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
ThinkPHP控制器详解
Jul 27 PHP
PHP实现动态web服务器方法
Jul 29 PHP
浅谈php+phpStorm+xdebug配置方法
Sep 17 PHP
php socket通信(tcp/udp)实例分析
Feb 14 PHP
php PDO实现的事务回滚示例
Mar 23 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
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
简单实现PHP留言板功能
2016/12/21 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
JavaScript中的Screen屏幕对象
2008/01/16 Javascript
JavaScript中的Window窗口对象
2008/01/16 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
2013/01/23 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
二叉树的非递归后序遍历算法实例详解
2014/02/07 Javascript
javascript实现百度地图鼠标滑动事件显示、隐藏
2015/04/02 Javascript
浅谈Jquery为元素绑定事件
2015/04/27 Javascript
javascript基于DOM实现省市级联下拉框的方法
2015/05/14 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
JS实现点击li标签弹出对应的索引功能【案例】
2019/02/18 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
windows下wxPython开发环境安装与配置方法
2014/06/28 Python
python复制文件到指定目录的实例
2018/04/27 Python
Python语法分析之字符串格式化
2019/06/13 Python
python如何实现视频转代码视频
2019/06/17 Python
Python Django实现layui风格+django分页功能的例子
2019/08/29 Python
Python爬虫使用代理IP的实现
2019/10/27 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
原装进口全世界:天猫国际
2016/08/03 全球购物
Michael Kors加拿大官网:购买设计师手袋、手表、鞋子、服装等
2019/03/16 全球购物
投资意向书
2014/07/30 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
运动会宣传稿50字
2015/07/23 职场文书
学校教师培训工作总结
2015/10/14 职场文书
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技