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的ob_start();控制您的浏览器cache!
Nov 25 PHP
PHP 数组教程 定义数组
Oct 23 PHP
PHP插入排序实现代码
Apr 04 PHP
apache和php之间协同工作的配置经验分享
Apr 08 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
Oct 25 PHP
php实现的简单检验登陆类
Jun 18 PHP
php短信接口代码
May 13 PHP
PHP书写格式详解(必看)
May 23 PHP
php fseek函数读取大文件两种方法
Oct 12 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 22 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 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中删除变量时unset()和null的区别分析
2011/01/27 PHP
php ajax 静态分页过程形式
2011/09/02 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
一款基于jQuery的图片场景标注提示弹窗特效
2015/01/05 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
关于cookie的初识和运用(js和jq)
2016/04/07 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
canvas实现钟表效果
2017/02/13 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
微信实现自动跳转到用其他浏览器打开指定APP下载
2019/02/15 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
Vue结合路由配置递归实现菜单栏功能
2020/06/16 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
Python骚操作之动态定义函数
2019/03/26 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
Python 实现将数组/矩阵转换成Image类
2020/01/09 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
通过python 执行 nohup 不生效的解决
2020/04/16 Python
浅谈pytorch 模型 .pt, .pth, .pkl的区别及模型保存方式
2020/05/25 Python
python实现单机五子棋
2020/08/28 Python
python RSA加密的示例
2020/12/09 Python
python实现简单文件读写函数
2021/02/25 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
Brasty波兰:香水、化妆品、手表网上商店
2019/04/15 全球购物
牵手50台湾:专为黄金岁月的单身人士而设的交友网站
2021/02/18 全球购物
教师先进个人材料
2014/12/17 职场文书
布达拉宫导游词
2015/02/02 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
python中的被动信息搜集
2021/04/29 Python
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript