zoukankan      html  css  js  c++  java
  • php 图形用户界面GUI 开发

    一、下载指定系统扩展

    1
    2
    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,接下来:

    1. php_ui.dll放入到php的ext目录中,然后php.ini加入extension=php_ui.dll
    2. pthreadVC2.dll和libui.dll放入php目录中,也就是和php.exe文件同级
    3. cmd中运行php -m命令查看模块有没有正确加载
     

    然后重启服务,phpinfo()查看,ui扩展安装成功。



    二、我们创建一个简单的计算器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    <?php
     
    use UIWindow;
    use UISize;
    use UIControlsEntry;
    use UIControlsLabel;
    use UIControlsButton;
    use UIControlsGrid;
     
    //创建一个窗口
    //参数一表示窗口标题
    //参数二表示窗口大小
    //参数三表示是否显示菜单
    $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 un();

    在控制台下运行php脚本

    1
    > php index.php

    运行结果如下:

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    <?php
     
    use UIWindow;
    use UISize;
    use UIControlsBox;
    use UIControlsEntry;
    use UIControlsButton;
    use UIControlsForm;
    use UIControlsRadio;
    use UIControlsCheck;
    use UIControlsCombo;
    use UIControlsMultilineEntry;
     
    //创建一个窗口
    //参数一表示窗口标题
    //参数二表示窗口大小
    //参数三表示是否显示菜单
    $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('注册'$winextends 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 un();

    运行结果如下:

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

    1
    2
    D:ampphp7php.exe -f D:wwwrootdemo1index.php
    pause

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

     参考 https://www.cnblogs.com/jkko123/p/7873024.html

              https://segmentfault.com/a/1190000011513423

     
  • 相关阅读:
    HDU 5938 Four Operations 【贪心】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5935 Car 【模拟】 (2016年中国大学生程序设计竞赛(杭州))
    HDU 5934 Bomb 【图论缩点】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5933 ArcSoft's Office Rearrangement 【模拟】(2016年中国大学生程序设计竞赛(杭州))
    HDU 5929 Basic Data Structure 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
    【转】LaTeX 符号命令大全
    HDU 5922 Minimum’s Revenge 【模拟】 (2016CCPC东北地区大学生程序设计竞赛)
    HDU 5927 Auxiliary Set 【DFS+树】(2016CCPC东北地区大学生程序设计竞赛)
    数据结构之稀疏矩阵
    C++中引用(&)的用法和应用实例
  • 原文地址:https://www.cnblogs.com/it-tsz/p/10680981.html
Copyright © 2011-2022 走看看