LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭

LOFTER-网易轻博

GUI

8023浏览    7735参与
Yue's Blog

php 图形用户界面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用户可以自行下载源码包,编译安装。


解压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...

原文出处

一、下载指定系统扩展

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用户可以自行下载源码包,编译安装。


解压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

运行结果


三、我们创建一个常用的注册表单

<?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();



为了避免每次都要打命令运行php脚本,我们可以写个bat脚本来运行。

D:\amp\php7\php.exe -f D:\wwwroot\demo1\index.php

pause

注意php.exe的路径和运行脚本路径,保存为run.bat,运行结果如下:







王涵洋 Jobs.w

病假没去年会,突然收到前方发来贺电,年度优秀员工。没啥特别想说的,一句话带过就是,2020,把公司产品做到币圈前二。

病假没去年会,突然收到前方发来贺电,年度优秀员工。没啥特别想说的,一句话带过就是,2020,把公司产品做到币圈前二。

王涵洋 Jobs.w
或许是币圈最极简最逼格最超前的...

或许是币圈最极简最逼格最超前的钱包设计,没有之一。图为夜间模式。

或许是币圈最极简最逼格最超前的钱包设计,没有之一。图为夜间模式。

王涵洋 Jobs.w
ONTO 2.4 核心主页全部...

ONTO 2.4 核心主页全部升级,探索到了新的细节极简设计。

ONTO 2.4 核心主页全部升级,探索到了新的细节极简设计。

王涵洋 Jobs.w
iconTool 永久停更,功...

iconTool 永久停更,功能体验已迭代到 100分。即日起新用户收费 1块钱为门槛。


也算是自己的一个原创代表作了。开始翻篇,探索下一个设计与体验为王的新作品

iconTool 永久停更,功能体验已迭代到 100分。即日起新用户收费 1块钱为门槛。


也算是自己的一个原创代表作了。开始翻篇,探索下一个设计与体验为王的新作品

王涵洋 Jobs.w
研究了一套官网设计新语言 Fo...

研究了一套官网设计新语言 Footer 模块

研究了一套官网设计新语言 Footer 模块

王涵洋 Jobs.w
iconTool iOS13...

iconTool iOS13 黑色主题即将发布。

iconTool iOS13 黑色主题即将发布。

王涵洋 Jobs.w

早上家人打电话说在新闻看到币安被查封的消息,问我有没有事,还问我现在所在的区块链公司会不会有什么问题。大致回答就是离开币安了也没啥事儿,币安换了个办公地点而已,现在的公司不涉及灰色地带,跟政府合作的,很放心。突然想起当初去币安的时候还不知道那是币安,只是因为对方介绍里写了区块链金融相关,而自己真的是喜欢区块链这个行业,仅仅这三个字就吸引到了我。

早上家人打电话说在新闻看到币安被查封的消息,问我有没有事,还问我现在所在的区块链公司会不会有什么问题。大致回答就是离开币安了也没啥事儿,币安换了个办公地点而已,现在的公司不涉及灰色地带,跟政府合作的,很放心。突然想起当初去币安的时候还不知道那是币安,只是因为对方介绍里写了区块链金融相关,而自己真的是喜欢区块链这个行业,仅仅这三个字就吸引到了我。

王涵洋 Jobs.w
自己的设计博客 #不一样的极简...

自己的设计博客 #不一样的极简设计 阅读量 897万

自己的设计博客 #不一样的极简设计 阅读量 897万

LOFTER

让兴趣,更有趣

简单随性的记录
丰富多彩的内容
让生活更加充实

下载移动端
关注最新消息