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开发GUI
Oct 09 PHP
15种PHP Encoder的比较
Mar 06 PHP
php简单定时执行任务的实现方法
Feb 23 PHP
PHP中字符安全过滤函数使用小结
Feb 25 PHP
php建立Ftp连接的方法
Mar 07 PHP
PHP curl使用实例
Jul 02 PHP
php将print_r处理后的数据还原为原始数组的解决方法
Nov 02 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
Jun 07 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
PHP 记录访客的浏览信息方法
Jan 29 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
May 25 PHP
让Laravel API永远返回JSON格式响应的方法示例
Sep 05 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初学者头疼十四条问题大总结
2008/11/12 PHP
php实现telnet功能示例
2014/04/08 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
浅析Javascript匿名函数与自执行函数
2016/02/06 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
Python读写配置文件的方法
2015/06/03 Python
opencv改变imshow窗口大小,窗口位置的方法
2018/04/02 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
Python datetime 如何处理时区信息
2020/09/02 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
上海微创软件面试题
2012/06/14 面试题
J2EE包括哪些技术
2016/11/25 面试题
应届生体育教师自荐信
2013/10/03 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
努力工作保证书
2015/02/28 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
2015年市场营销工作总结
2015/07/23 职场文书
python 网络编程要点总结
2021/06/18 Python
Linux中如何安装并部署Redis
2022/04/18 Servers
原生JS实现分页
2022/04/19 Javascript
cypress测试本地web应用
2022/06/01 Javascript