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水印
Mar 16 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
Jun 06 PHP
php 常用算法和时间复杂度
Jul 01 PHP
PHP中判断变量为空的几种方法分享
Aug 26 PHP
php随机显示图片的简单示例
Feb 15 PHP
ThinkPHP单字母函数(快捷方法)使用总结
Jul 23 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
May 13 PHP
PHP中header用法小结
May 23 PHP
Yii2实现中国省市区三级联动实例
Feb 08 PHP
php实现生成code128条形码的方法详解
Jul 19 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 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 Undefined index报错的修复方法
2011/07/17 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
php中pcntl_fork创建子进程的方法实例
2019/03/14 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
Prototype Class对象学习
2009/07/19 Javascript
Riot.js 快速的JavaScript单元测试框架
2009/11/09 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
2010/11/28 Javascript
js的正则test,match,exec详细解析
2014/01/29 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
2014/05/15 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
python进程类subprocess的一些操作方法例子
2014/11/22 Python
Python中的pprint折腾记
2015/01/21 Python
详解python 字符串和日期之间转换 StringAndDate
2017/05/04 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
文明美德伴我成长演讲稿
2014/05/12 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
简单租房协议书
2014/10/21 职场文书
见习报告怎么写
2014/10/31 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
介绍信范文大全
2015/05/07 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python
java泛型通配符详解
2021/07/25 Java/Android
python游戏开发Pygame框架
2022/04/22 Python