php7 图形用户界面GUI 开发示例
作者:怀素真 发布时间:2023-09-12 03:16:50
标签:php7,图形用户界面,GUI
本文实例讲述了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用户可以自行下载源码包,编译安装。
解压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,运行结果如下:
希望本文所述对大家PHP程序设计有所帮助。
来源:https://www.cnblogs.com/jkko123/p/7873024.html


猜你喜欢
- 前言配置火狐浏览器对应的selenium驱动一、火狐浏览器驱动下载下载地址根据对应的系统环境下载相应的压缩包(这里下载的是Windows系统
- 前言:在appium中adb命令的使用必不可少,做android测试嘛,adb命令肯定肯定是每天都要用的啦,所以今天给特地写个博客吧!这里就
- 第七步: 在自定义分页的Repeater 里添加排序功能现在已经完成了自定义分页,我们再来添加排序功能。ProductsBLL类的GetPr
- 昨天第一次用python画圆,当时并没有安装numpy库(导入数据包)和matplotlib库(导入图形包),于是尝试用pip安装库首先,我
- 如果你的Mysql数据库安装在centos7的系统上,并且你的操作系统启用了防火墙。应用要访问mysql数据库,你有2个解决方案。方案一:停
- 前言接口在面向对象编程中是经常使用的招式,也是体现多态很重要的手段。是的。Golang中也有接口这玩意儿。1.为什么需要接口?多数情况下,数
- javascript的字符集:javascript程序是使用Unicode字符集编写的。Unicode是ASCII和Latin-1的超集,并
- 本文实例介绍了如何使用ASP代码来读写注册表,呵呵厉害吧! 一个例子: <%Dim ReadComputerNam
- 1.0tensorflow的安装1.1安装pythonpython下载 需要python3.x<=3.7https://www.pyt
- 面试mysqldba的时候遇到一个题:描述msyql replication 机制的实现原理,如何在不停掉mysql主库的情况下,恢复数据不
- 准备在以后制作的网站中尝试一些变化,比如:先提交内容,后提示注册/登陆。感觉这样可以绑架更多用户……不想注册再发言?那就先让你上钩发言,然后
- np.where共两种用法:第一种np.where(condition, x, y),即condition为条件,当满足条件输出为x,不满足
- 一、is_numberic函数简介国内一部分CMS程序里面有用到过is_numberic函数,我们先看看这个函数的结构bool is_num
- 本文实例讲述了Python callable()函数用法。分享给大家供大家参考,具体如下:python中的内建函数callable( ) ,
- Python2.7: 使用Pyhook模块监听鼠标键盘事件-获取坐标。因该模块对Python3 有兼容性问题,故采用python2.7解释器
- 为了区分选择与未选择区域,,将已选择区域的文本背景色设置为浅蓝色是个很做法。设置的路径在 Editor > Color Scheme
- 安装模块windows:pip install pymysqlubuntu:sudo pip3 install pymysqlpython操
- el-table使用el-select选中后无效需求:表格中一行显示一条数据,数据中的某个属性要展示一列,并且再另一列中用el-select
- 目录1、准备基础数据2、一次性展示数据3、引入分页器附:drf分页器的使用1.1 PageNumberPagination1.2 Limit
- 从三个方面来说,主要有方面的措施:对象的引用计数机制、垃圾回收机制、内存池机制。一、对象的引用计数机制Python内部使用引用计数,来保持追