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

     
  • 相关阅读:
    iOS APP程序启动原理
    关于组合式继承和寄生式继承的个人理解
    servlet session 相关
    hadoop配置远程客户端
    将普通工程转为mvn标准工程(main resources)
    log4j2 配置文件
    mvn生成runnablejar 的方法
    普通工程转为mvn工程
    java ReentrantLock可重入锁功能
    在mapreduce中做分布式缓存的问题
  • 原文地址:https://www.cnblogs.com/it-tsz/p/10680981.html
Copyright © 2011-2022 走看看