พยายามหาข้อมูลของสองตัวนี้เอามาลองเขียน python application แต่ไม่แน่ใจว่าตัวเองเข้าใจถูกหรือเปล่า
TCL/TK มันเขียนด้วย code เหมือนตอนเราเขียน swing ของ java หรือเปล่าครับ เท่าที่ลองเขียนดูมันก็เป็นแบบนั้น แต่ไม่แน่ใจว่าเราจะสามารถแยกส่วนของ GUI ออกมาต่างหากได้หรือเปล่า หรือว่าต้องเขียนปนกันไปจริงๆ ถ้าแยกก็ต้องพยายามทำ MVC เอาเอง
พยายามหา IDE ของ TCL/TK แต่ดันหาไม่เจอ :(
QT มันแยกแยกส่วน GUI ออกมาเลยเหมือน Interface Builder ของ OS X ที่ได้ไฟล์เป็น .nib ออกมา ถ้าเราเขียนด้วย QT จะได้เป็น .ui ออกมา ไม่รู้ว่าเข้าใจถูกหรือเปล่า แต่ที่สงสัยมากๆ คือ QT มัน commercial หรือเปล่าครับหรือว่ามีทั้งสองแบบ ถ้าผมต้องการเอามาทำ open source ผมจะใช้ QT ได้หรือเปล่า
ที่สับสนเพราะเห็นมีคนใช้ QT ทำ application กันมากมาย แต่พอพยายาม search ดันเจอแต่ QT4 ที่เป็น commercial ซะนี่
เลยเป็นความสงสัยมากๆ ว่าความจริงเป็นอย่างไรกันแน่
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
Tcl/Tk น่าจะหมายถึง Tkinter ใน Python ผมเคยเขียนอยู่พักนึง พักใหญ่ๆ มันก็เขียนเป็น MVC ได้นะ แม้ว่าจะไม่ค่อยเป็นธรรมชาตินัก มันจะเป็นทำนองใส่ Python เข้าไปแทน Tcl
Qt ผมไม่เคยใช้ ด้วยเหตุผลว่ามันไม่ใช่โอเพนซอร์สเต็มตัว แม้ว่ามันจะสวยและดีแค่ไหนก็ตาม
โดยส่วนตัวผมแนะนำ GTK หรือ Gnome ดีกว่า
QT สวยมากและมี QT Jambi ด้วย
QT เป็น commercial มานานแล้วครับ ตั้งแต่รุ่นแรกมั้ง. ซักพักก็เปลี่ยนมาเป็น Dual license คือมีทั้งแบบ GPL และ proprietary บน unix-like. พึ่งมี QT4 นี่เองที่มี open source edition บนทุก Platform. ตอนนี้มี QT Jambi สำหรับ Java ด้วย.
อย่างไรก็ตามสำหรับผมแล้วเป็นห่วงเรื่องการใช้ภาษาไทยนิดหน่อย. ถ้าอยากจะใช้กับภาษาไทยแบบให้ตัดคำถูกต้อง*อาจจะ*ออกแรง patch ก่อน. ถ้ามีคน patch ไปก่อนแล้วก็ดี. ใน QT4 นี่การ patch น่าจะเป็นระบบกว่า QT3 เพราะแยก layout engine ออกมาชัดเจน ชื่อว่า Scribe.
Tk ใน 8.5a เปลี่ยนมาใช้ Freetype ทำให้ render font แบบ ttf ได้แต่ว่าระบบ layout ก็ยังไม่ได้แก้อะไรมาก. แต่ว่าก็ไม่ได้ตามนานแล้ว.
ผมเห็น demo แล้วประทับใจสุดๆ แต่ผมหา download โปรแกรมไม่เจอ :'( ยิ่งพวก IDE มันดันขายซะนี่ ไม่รู้ของบน Linux เป็นอย่างไรบ้าง แต่ผมดันลืมลง X11 เลยใช้ dawinPort เล่นไม่ได้ เศร้าสองต่อ ใครพอมี URL ช่วยสงเคราะห์ผมหน่อยนะครับ
Apirak
หมายถึง QT? ftp://ftp.trolltech.com/pub/qt/source
---
http://openil.wordpress.com/
แต่ก่อนผมชอบ Qt มาก เพราะมีอะไรเจ๋ง ๆ หลายอย่าง เขียนง่ายอีกต่างหาก แต่หลังจากเจอปัญหาตอนติดตั้งบน windows ที่ไม่มี license แบบ OpenSource ก็เลยเลิกใช้ไป แม้ว่า Qt 4 จะมี เวอร์ชัน OpenSource ให้ใช้ แต่ดาวน์โหลดค่อนข้างยาก ตอนนี้ผมไม่แน่ใจว่าปัญหานี้หมดไปหรือยัง เพราะตอนหลังหันมาใช้ GTK แทนเหมือนกัน
โดยส่วนตัวผมรู้สึกว่า Qt ดีกว่า GTK ส่วน Tkinter นี่ผมไม่เคยใช้ เพราะแสดงผลบน X-Server (*NIX) ได้น่าเกลียดมาก หากจะใช้งานแบบพื้น ๆ ไม่ advance มาก ผมคิดว่า GTK ก็ดีมากจนแทบใช้ไม่หมดแล้วครับ
หากสนใจ PyGTK ลองอ่าน PyGTK with Glade ดูครับ ผมอ่านแล้วรู้สึกว่าการสร้าง GUI ด้วย PyGTK มันง่ายมาก ๆ เลยทีเดียว
เคยลง GTK+ บน Windows แล้วภาษาไทยเพี้ยนๆ T_T. ผมใช้ QT ไม่เป็นอะครับ เอาอ่านแล้วงงๆ งง API สงสัยเพราะเป็น C++ ด้วย. เวลาเขียน GUI บน GNU/Linux ผมเลยใช้ GTK+ ส่วนมาก.
แต่ใช้ Glade ก็อึดอัดนิดหน่อยหลังจากลองใช้ Gorm :-P.
ผมเคยลองเขียน TCL/TK (ไม่ใช่ Python/Tkinter) นิดนึงเมื่อนานหลายปีมาแล้ว
Tk เป็น GUI toolkit ที่เก่าแก่มาก ดังนั้นผมคาดเดาเอาเองว่ามันไม่น่าเหมาะกับการเขียนโปรแกรมที่แสดงผลข้อมูลที่ซับซ้อนหรือต้องการความสวยงามนะครับ
ผมอยากแนะนำให้ศึกษา Qt หรือ GTK+ มากกว่า เพราะมีคลาสทั้งแบบ GUI และ non-GUI ให้เลือกใช้จำนวนมาก
โดยพื้นฐานแล้ว GUI toolkit ทุกตัวออกแบบให้เขียนด้วยโค๊ดได้ทั้งนั้น ส่วน GUI Builder/IDE เป็นแค่เครื่ีองมืออำนวยความสะดวกในการพัฒนาซอฟแวร์เท่านั้น สำหรับ TCL/TK ก็อย่างเช่น SpecTcl (http://spectcl.sourceforge.net/) เป็นต้น
เว็บไซต์ของ Qt คือ www.trolltech.com มีข้อมูลไลเซนต์อยู่ครับ
Qt เป็น dual-license มานานพอสมควรแล้ว แต่ปัญหาคือ
- มันไม่ใช่ opensource ในความหมายของโลก opensource ซะทีเดียวเพราะทาง Trolltech AS ยังเป็นผู้คุมการแก้ไขโค๊ดต้นน้ำแต่เพียงผู้เีดียว
- Qt ใช้ GPL ไม่ใช่ LGPL หรือ BSD ดังนั้นถ้าเริ่มต้นพัฒนาโปรแกรมแบบ GPL แล้วจะมาเปลี่ยนเป็น commercial ภายหลังไม่ได้
โดยส่วนตัวแล้วถ้าให้เขียนผมชอบ Qt มากกว่าเพราะเขียนง่าย ไม่เก่งเรื่อง C pointer ก็เขียนได้
แต่รู้สึกว่าโปรแกรมที่เขียนด้วย GTK+ ดูน่าใช้กว่า
ใช้ pygtk หรือ GTK# หรือ ruby gnome ก็ได้. แต่ GTK+ ใน C ก็ดีนะครับ pointer ไม่ได้ซับซ้อนมากดูดิบๆ เข้าใจง่ายดี.