[心得] GUI

看板Ruby作者 (godfat 真常)時間17年前 (2007/07/22 14:29), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/5 (看更多)
http://blog.godfat.idv.tw/2007/07/ruby-gui.html Ruby GUI 關於 computer science 這個領域,除了程式語言(programming language)與 物件導向(object-oriented)外,再下一個興趣大概就是使用者圖形介面了吧(GUI). 所以我一直想找個自己喜歡的 toolkit 來用,在 C++ 中無非就是 Qt4 了, 不過在 Ruby 中,似乎沒有一個比較完美的 solution, 一個個來看。 在這之前,我先說明一下我用過的 C/C++/Java GUI toolkit. 1. MFC, 學校在教如何剪貼 MFC code, 我是叛逆份子,所以一個字都沒聽進去。 不用別人說很糟,光看第一眼就覺得很糟,更何況他又是被罵得半死的東西。 2. wxWidgets, 這算是我第一個使用的 GUI toolkit, 基本上,我認為這真的 是個很強大的東西,沒話說。不過最令人嘖嘖稱奇的應該是他跨平台的能力,如果我 沒記錯的話,他跨的平台好像比 Java 還多!不過因為風格問題,我不是很喜歡。 基本上,我認為 wxWidgets 的風格有些過於老舊,寫起來感覺不是很好。 Ruby binding 叫 wxRuby. 3. Qt, 我想正是因為 wxWidgets 跟我不太合,所以才繼續找下去。不料找到 Qt4, 我認為這應該是接近完美的 solution 了。有人說,Qt 至少領先其他人十年,也許 這麼講並不為過。最令人詬病的,大概就是你只能從 GPL 或超昂貴的商業 solution 兩種 license 中選一種。其實我不覺得這對我來說會是很大的困擾,open source 沒什麼不好,雖然 GPL 是有點太激進了些。Ruby binding 叫 QtRuby. 4. GTK+, 這個其實我不只沒用過,甚至連看都沒看過。理由很簡單,就是我不想用 C 想用 C++. 當然我知道 GTK+ 評價不錯,也有 Glade 和 win32 的 port, 只是似乎沒有足夠的推力讓我去嘗嘗看。 5. Swing, 會碰這個完全只是因為需要用 Java. 我個人是覺得他跟 wxWidgets 各有千秋,但同樣遠遜於 Qt. 不過也許這樣比較並不太公平,Java 天生就是沒 C++ 強。 所以 Qt 遠勝可能是理所當然的?Ruby 要用可以使用 JRuby. 6. Ultimate++, 其實這個我沒用過,不過看起來是不錯。沒去試主要有三個原因, 一,他綁 IDE, 這個我很不爽。二,他的命名法我不能接受。三,Qt 很好。XD 其實你去看他的網站,他有一個範例程式,並用各種 toolkit 來實做。我個人認為 這個動作滿不誠懇的,他有故意挑其他人弱點的嫌疑。而且各 toolkit 做到的東西 明顯有差異,這樣比並不公平。不誠懇,不喜歡。 7. Notus/VCF, 這兩樣 toolkit 都有一個很大的特色,就是 template template and template... 基本上用 C++ 當然是要用 template 啊!! 不過知道這兩樣東西時我已經有一段時間沒碰 GUI 了,所以並沒有仔細調查這兩個 toolkit 感覺如何。但我想如果沒辦法接受 Qt 的話,這兩套 toolkit 值得一看。 8. .NET/mono, 這個其實我只用過 Visual C++ 2005 Express 稍微拉了一下 介面,感覺還不錯,但直接寫起程式不知道是什麼感覺。Ruby 要用的話,或許可以試試 IronRuby, 不過我個人對 .NET 沒什麼好感,就不去試了。 9. VCL, Borland 的招牌,我用過 Turbo C++ Explorer, 感覺是﹍基本上 我覺得沒有 .NET 好的感覺。而且要跨平台恐怕有點難,所以就不考慮了。更何況 這些好像也不算 open source 的吧? 10. FOX, 這個是我最沒聽過的 toolkit, 是去找 Ruby GUI 時才發現他的存在, 所以我一點都不知道他的狀況究竟如何。評價似乎是不錯,而且好像很年輕。只是呢﹍ FXRuby 似乎沒有 mac 的 port, 而我也已經有點懶得用 C++ 寫 GUI 了, 所以還是暫時跳過吧﹍。基本上沒有跨 win32/x11/aqua 三大系統的 toolkit, 我就沒什麼興趣試了。 本來只想隨意講一點的,不知不覺就扯多了。接下來看 Ruby 能使用的東西: 1. tk, 沒記錯的話,這個被 ruby 內建起來了。不過似乎是用過的都說爛, 所以還是不要多考慮吧? 2. FXRuby, FOX 的 ruby binding, 評價相當不錯,唯一的缺點也許是 還沒有 mac 版的樣子?我想未來應該值得繼續關切,雖然我還沒看過他程式 寫起來像什麼樣子。要試用的話,除了需要安裝 FOX, FXRuby 就: gem install fxruby 3. wxRuby, wxWidgets 的 ruby binding, 我是看到有人批評寫起來像在寫 C++, 這應該算是一個滿大的缺點,不過看在他功能強大,跨平台能力驚人的份上, 還是值得試試看吧。要試用的話,除了需要安裝 wxWidgets, wxRuby 就: gem install wxruby 4. QtRuby, Qt3 與 Qt4 的 ruby binding, 基本上評價仍然是相當地好, 唯一的兩大缺點,第一個是沒有 gem, 不能 gem install qtruby, 第二個是 在 windows 上要安裝似乎非常困難,沒有簡單的方法。但我相信假以時日,這兩個 問題都能夠解決(嗚嗚)。 5. Swing, 要灌 JRuby, 我的 macports 似乎找不到 jruby, 我又不想從 sun 的網站抓下來灌,再說,我也沒喜歡過 swing 過,所以就懶得試了。 6. Mono, 我有灌 mono, 不過不是很清楚能不能用 IronRuby 之類的東西存取, 之所以寫在這,算是做個筆記,說不定可以使用這樣。 7. GTK+, 我不是很確定有沒有 ruby binding, 但我想應該會有才是。不試的理由 同上,所以也只是暫時筆記。 Ruby 的 GUI 比較有名的大概就這幾個了吧。其實我是一直想試 QtRuby 的, 雖然 windows 上似乎不太容易使用,但相信假以時日一定可以的。而讓我卻步最大的 問題點在於,不能用 gem 安裝,macports 也找不到 QtRuby. 也就是說, 我得親自 ./configure make make install, 但我不喜歡這樣,管理不便。 所以我決定還是暫時放下他,等他有 gem 或是 port 時再說吧! FXRuby 因為沒用過 FOX, 所以也還是放著再說。更何況據說是沒有 mac 版, 那我試屁啊﹍。所以左右思量之下,我還是決定先試 wxRuby! 安裝方便, 強大的跨平台能力,雖然是 C++ style 而非 the ruby way, 但對我來說 C++ style 也不是那麼地令人排斥,也許有點詭異,但我覺得也可以用自己想要的 方式重新 wrap 一次,對 ruby 來說那是如此簡單的事! so have a try with wxRuby! this is the hello world: require 'rubygems' require 'wx' class HelloWorld < Wx::App include Wx def on_init helloframe = Frame.new nil, -1, "Hello World" StaticText.new helloframe, -1, "Hello World" helloframe.show end end HelloWorld.new.main_loop sudo port install wxwidgets sudo gem install wxruby 作者: godfat 真常 在 7/22/2007 12:52:00 下午 -- Nobody can take anything away from him. Nor can anyone give anything to him. What came from the sea, has returned to the sea. Chrono Cross -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.28.18

07/24 13:43, , 1F
有ruby-gtk呀~
07/24 13:43, 1F
文章代碼(AID): #16elbaTC (Ruby)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 5 篇):
1
1
17年前, 07/22
2
6
17年前, 07/22
17年前, 07/23
1
1
17年前, 07/24
5
7
17年前, 10/31
文章代碼(AID): #16elbaTC (Ruby)