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 相关文章推荐
做个自己站内搜索引擎
Oct 09 PHP
php桌面中心(三) 修改数据库
Mar 11 PHP
领悟php接口中interface存在的意义
Jun 27 PHP
php接口和抽象类使用示例详解
Mar 02 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
php判断访问IP的方法
Jun 19 PHP
php生成curl命令行的方法
Dec 14 PHP
php用正则判断是否为数字的方法
Mar 25 PHP
php使用number_format函数截取小数的方法分析
May 27 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
PHP与以太坊交互详解
Aug 24 PHP
使用laravel指定日志文件记录任意日志
Oct 17 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 smarty 二级分类代码和模版循环例子
2011/06/16 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
JS数学函数Exp使用说明
2012/08/09 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
Javascript 按位取反运算符 (~)
2014/02/04 Javascript
利用Jquery实现可多选的下拉框
2014/02/21 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
jQuery实现打开页面渐现效果示例
2016/07/27 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
Vue js 的生命周期(看了就懂)(推荐)
2019/03/29 Javascript
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
Python抽象和自定义类定义与用法示例
2018/08/23 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
对PyQt5中的菜单栏和工具栏实例详解
2019/06/20 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
python中元组的用法整理
2020/06/15 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
小摄影师教学反思
2014/04/27 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技