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 和 XML: 使用expat函数(一)
Oct 09 PHP
php用户注册页面利用js进行表单验证具体实例
Oct 17 PHP
php过滤敏感词的示例
Mar 31 PHP
PHP中使用循环实现的金字塔图形
Nov 08 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
PHP多维数组排序array详解
Nov 21 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
PHP微信发送推送消息乱码的解决方法
Feb 28 PHP
php+Ajax无刷新验证用户名操作实例详解
Mar 04 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 PHP
微信小程序和php的登录实现
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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
main.php
2006/12/09 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
解析Extjs与php数据交互(增删查改)
2013/06/25 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
js清理Word格式示例代码
2014/02/13 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
详解nodejs中express搭建权限管理系统
2017/09/15 NodeJs
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
webpack下实现动态引入文件方法
2018/02/22 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
Python中的random()方法的使用介绍
2015/05/15 Python
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
python使用Tesseract库识别验证
2018/03/21 Python
python实现朴素贝叶斯算法
2018/11/19 Python
python中如何写类
2020/06/29 Python
用python对oracle进行简单性能测试
2020/12/05 Python
巴西购物网站:Submarino
2020/01/19 全球购物
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
三分钟英语演讲稿
2014/04/24 职场文书
城市规划应届毕业生自荐信
2014/07/04 职场文书
应届大学生求职信
2014/07/20 职场文书
个人典型事迹材料
2014/12/30 职场文书
三峡大坝导游词
2015/01/31 职场文书
2015年五一劳动节演讲稿
2015/03/18 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
Win11 BitLocker 驱动器加密
2022/04/19 数码科技