PHP GUI探索

圖片來自小熊蛋的收藏

工作需要窘茁,所以從php GUI開始躯畴。

GUI簡介

官方簡介:這個(gè)擴(kuò)展包讓libui為跨平臺(tái)開發(fā)原生的外觀和感覺用戶界面提供了一個(gè)面向?qū)ο蟮腁PI爵政。

我這個(gè)翻譯確實(shí)有點(diǎn)兒尬及汉,反正不是重點(diǎn)稠炬。

重點(diǎn)是這個(gè)GUI庫僅支持PHP7哦

據(jù)說呢焕阿,這個(gè)UI原先是一個(gè)牛人andlabs用C寫的libui 給他的Go UI 界面庫用的,后來被PHP引用了首启。


來自知乎@Scott Huang

我來試著搞定這個(gè)東西暮屡,萊茨狗~

GUI 安裝/配置

我開發(fā)用的php版本是php7.0.17 NTS


祈禱它能正常的運(yùn)行

先不看官方文檔,但是mark一下:https://secure.php.net/manual/zh/book.ui.php

找了一年前一位前輩的帖子起手毅桃,他把壓縮包附帶的幾個(gè)游戲放在github了褒纲,有興趣可以看一下:


視線回來准夷!敲黑板了

先下載擴(kuò)展:https://pecl.php.net/package/ui?境外網(wǎng)請(qǐng)自覺開啟藍(lán)燈。


我選擇了Release 2.0.0 PHP7.0 NTS X64莺掠,解壓后是三個(gè)dll文件衫嵌。


開藍(lán)燈真是沒法兒寫博客。彻秆。渐扮。

?php_ui.dll?復(fù)制到 PHP 的?ext?目錄下,?

其余兩個(gè)文件?libui.dll??pthreadVC2.dll?放到 PHP 的根目錄下掖棉,也就是與?php.exe?的同級(jí)目錄墓律。

解壓包里除了dll還有三個(gè)寫好的游戲,我們測試下擴(kuò)展是否可用:


no幔亥。耻讽。。

ok帕棉,失敗了针肥,什么都沒打開,我來看看官方文檔香伴。

在php.ini中把擴(kuò)展加進(jìn)去慰枕。



ok 成功了

GUI 寫個(gè)小程序

還沒去翻官方文檔,先引用大神的小項(xiàng)目試手@懷素真

use?UI\Window;

use?UI\Size;

use?UI\Controls\Entry;

use?UI\Controls\Label;

use?UI\Controls\Button;

use?UI\Controls\Grid;

//創(chuàng)建一個(gè)窗口

//參數(shù)一表示窗口標(biāo)題

//參數(shù)二表示窗口大小

//參數(shù)三表示是否顯示菜單

$win?=?new?Window('簡單的計(jì)算器',?new?Size(640, 480), true);

//創(chuàng)建一個(gè)文本框

//Entry::Normal 普通單行文本框

//Entry::Password 密碼框

//Entry::Search 搜索框

$num1?=?new?Entry(Entry::Normal);

$num2?=?new?Entry(Entry::Normal);

$ret?=?new?Entry(Entry::Normal);

//創(chuàng)建一個(gè)標(biāo)簽

$lab?=?new?Label('+');

//創(chuàng)建一個(gè)按鈕

$btn?=?new?class('計(jì)算')?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);

????}

};

//創(chuàng)建一個(gè)網(wǎng)格

$grid?=?new?Grid();

//把上面的控件加入到網(wǎng)格布局中

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



下面這個(gè)小程序mark一下即纲,可以參考下寫法具帮。


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;

//創(chuàng)建一個(gè)窗口

//參數(shù)一表示窗口標(biāo)題

//參數(shù)二表示窗口大小

//參數(shù)三表示是否顯示菜單

$win?=?new?Window('簡單的計(jì)算器',?new?Size(640, 480), true);

//創(chuàng)建一個(gè)表單

$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);

//愛好(多選)

//創(chuàng)建一個(gè)盒子,水平排列

$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);

//地區(qū)(下拉框)

$area?=?new?Combo();

$area->append("北京");

$area->append("上海");

$area->append("武漢");

$frm->append('地區(qū):',?$area, false);

//簡介(多行文本)

$desc?=?new?MultilineEntry();

$frm->append('簡介:',?$desc, false);

//注冊(cè)按鈕

$reg?=?new?class('注冊(cè)',?$win)?extends?Button {

????protected?$win;

????public?function?__construct($text,?$win) {

????????$this->win =?$win;

????????parent::__construct($text);

????}

????//用于重寫父類的單擊事件

????protected?function?onClick() {

????????$this->win->msg('消息',?'你點(diǎn)擊了注冊(cè)按鈕');

????}

};

$frm->append('',?$reg);

$win->add($frm);

//顯示窗口

$win->show();

UI\run();


恭喜我進(jìn)階為GUI新手低斋,下面進(jìn)入新手訓(xùn)練營蜂厅,當(dāng)當(dāng)當(dāng)當(dāng)~
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市膊畴,隨后出現(xiàn)的幾起案子掘猿,更是在濱河造成了極大的恐慌,老刑警劉巖唇跨,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稠通,死亡現(xiàn)場離奇詭異,居然都是意外死亡买猖,警方通過查閱死者的電腦和手機(jī)改橘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來政勃,“玉大人唧龄,你說我怎么就攤上這事兼砖〖樵叮” “怎么了既棺?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長懒叛。 經(jīng)常有香客問我丸冕,道長,這世上最難降的妖魔是什么薛窥? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任胖烛,我火速辦了婚禮,結(jié)果婚禮上诅迷,老公的妹妹穿的比我還像新娘佩番。我一直安慰自己,他們只是感情好罢杉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布趟畏。 她就那樣靜靜地躺著,像睡著了一般滩租。 火紅的嫁衣襯著肌膚如雪赋秀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天律想,我揣著相機(jī)與錄音猎莲,去河邊找鬼。 笑死技即,一個(gè)胖子當(dāng)著我的面吹牛著洼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播而叼,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼郭脂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了澈歉?” 一聲冷哼從身側(cè)響起展鸡,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎埃难,沒想到半個(gè)月后莹弊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡涡尘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年忍弛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片考抄。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡细疚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出川梅,到底是詐尸還是另有隱情疯兼,我是刑警寧澤然遏,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站吧彪,受9級(jí)特大地震影響待侵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姨裸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一秧倾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧傀缩,春花似錦那先、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瞄摊,卻和暖如春勋又,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背换帜。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工楔壤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惯驼。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓蹲嚣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親祟牲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子隙畜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • PHP 學(xué)習(xí)目錄 ├─PHP視頻教程 1 LAMP網(wǎng)站構(gòu)建 │ ├─PHP教程 1.1.1 新版視頻形式介紹│ ...
    曹淵說創(chuàng)業(yè)閱讀 16,155評(píng)論 29 417
  • 更改ip和dnsVi /etc/sysconfig/network-scripts/ifcfg-eth0vi /...
    Xwei_閱讀 1,814評(píng)論 0 3
  • Welcome 目前網(wǎng)絡(luò)上充斥著大量的陳舊信息,讓PHP新手誤入歧途说贝,傳播著錯(cuò)誤的實(shí)踐和糟糕的代碼议惰,這必須得到糾正...
    layjoy閱讀 21,672評(píng)論 7 118
  • 一、php可以做什么 php是一種可以在服務(wù)器端運(yùn)行的編程語言乡恕,可以運(yùn)行在Web服務(wù)器端言询。 php是一門后臺(tái)編程語...
    空谷悠閱讀 3,096評(píng)論 4 97
  • 不知該從何說起,最近總覺得自己心理有問題傲宜。在別人看來無所謂的事运杭,我卻在斤斤計(jì)較,感覺自己是一個(gè)缺愛的人函卒。所有人都可...
    240梁云麗閱讀 863評(píng)論 1 0