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 10 PHP
shopex中集成的站长统计功能的代码简单分析
Aug 11 PHP
phpmail类发送邮件函数代码
Feb 20 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
Sep 27 PHP
CI框架装载器Loader.php源码分析
Nov 04 PHP
Yii使用ajax验证显示错误messagebox的解决方法
Dec 03 PHP
使用URL传输SESSION信息
Jul 14 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 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
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
2009/05/21 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
python计数排序和基数排序算法实例
2014/04/25 Python
理解Python中的With语句
2016/03/18 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
python3.5绘制随机漫步图
2018/08/27 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
python pygame实现球球大作战
2019/11/25 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
python实现批处理文件
2020/07/28 Python
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
联欢晚会主持词
2014/03/25 职场文书
校园环保标语
2014/06/13 职场文书
银行员工犯错检讨书
2014/09/16 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
庆祝儿童节标语
2014/10/09 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
2015年重阳节活动总结
2015/03/24 职场文书
导游词之天津盘山
2019/11/01 职场文书
详解Redis复制原理
2021/06/04 Redis
Python 中面向接口编程
2022/05/20 Python