2009-05-08 39 views
13

Tôi đang suy nghĩ về nền tảng chéo với các ràng buộc ngôn ngữ lập trình tốt đẹp (Java, Ruby và Python). Điều gì sẽ là đường cong học tập "phẳng nhất" nhưng chưa đủ sức mạnh để thực hiện hầu hết các tính năng GUI tiêu chuẩn? Những gì bạn guys/gals đề nghị; FOX, wx, Tk hoặc Qt?Bộ công cụ GUI thực tế?

Trả lời

20

Tôi sẽ đi với Qt. Nó hoạt động trên tất cả các nền tảng chính và được cải tiến liên tục. Bạn cũng có thể bắt đầu rất nhanh. Có các ràng buộc cho Java, Ruby và Python.
Thêm miễn phí nếu bạn đang viết các chương trình nguồn mở.

+0

Ngoài ra, hoàn toàn miễn phí nếu bạn đang viết các ứng dụng nguồn mở (được phát hành dưới dạng GPL). – Matt

+5

LGPL của nó, do đó, miễn phí của nó bất kể bạn sử dụng giấy phép nào cho ứng dụng của mình. – gbjbaanb

+0

Qt4 có hỗ trợ BiDI tốt nhất nếu bạn cần hỗ trợ tập lệnh RTL. Linh hoạt nhất và IMHO phong phú hơn. – elcuco

7

Thành thật mà nói, tôi đã xây dựng mọi thứ với Tk, wx và Qt, và tôi ghét tất cả chúng như nhau. Trình soạn thảo trực quan của Qt là thứ ít đáng ghét nhất trong ba người tôi nghĩ.

+0

Hầu hết các lập trình viên chuyên nghiệp Tk tôi biết đồng ý rằng Tk rất dễ sử dụng mà một trình soạn thảo trực quan chỉ bị cản trở. Cho dù điều đó nói lên bất cứ điều gì về sự dễ dàng sử dụng của Qt hoặc wx so với Tk, tôi không biết. –

+1

Vâng, tôi vẫn thích lời nguyền. –

+0

@Charlie Martin Với lịch sử của bạn, tôi biết tại sao :-) – lothar

1

Tôi đã không làm việc với Qt, vì vậy tôi không thể đánh giá nó, nhưng tôi đã làm việc với wx và nó khá dễ dàng để làm việc với và vẫn còn khá nạc. Ngoài ra, wxWidgets cung cấp cho bạn các tiện ích gốc trên mọi nền tảng, đó là một lợi thế rất lớn (đặc biệt là đối với Mac). Trong khi những người khác mô phỏng giao diện của nền tảng gốc, wxWidgets trực tiếp sử dụng các tiện ích gốc nhanh hơn trong nhiều trường hợp.

+1

Không hoàn toàn đúng - Tk sử dụng các tiện ích gốc trên các nền tảng có các tiện ích gốc (đọc: Windows và Mac). Không có thi đua, bạn sẽ có được thỏa thuận thực sự. –

2

Nếu bạn đang xem xét Java, SWT là một bộ công cụ GUI đa nền tảng tuyệt vời.

4

WX tất cả các cách! Tôi không phải là chuyên gia về GUI, nhà thiết kế hay thậm chí là một "GUI guy", nhưng gần đây tôi cần viết một giao diện người dùng cho một công cụ cấu hình sản phẩm (thực ra nó là một bộ sưu tập các công cụ, nhưng chúng tôi muốn có một giao diện duy nhất để truy cập và chạy khu mua sắm).
Tất cả các công cụ đều được viết bằng Python, vì vậy tự nhiên tôi đã chuyển sang Python cho giao diện người dùng.
Tôi định cư trên wxPython ... một "nhập wx" và một vài hướng dẫn sau, tôi đã đập ra khung hình, sổ ghi chép và bảng nút như tôi biết những gì tôi đã làm.
Tôi tìm thấy rất nhiều ví dụ để giúp tôi khi tôi gặp khó khăn và tài liệu wxPython rất hữu ích - mặc dù chúng chỉ là tài liệu C++, chúng vẫn khá trực quan.
Tìm kiếm trên web nhanh chóng sẽ hiển thị nhiều hướng dẫn wxPython để giúp bạn bắt đầu.

Tôi đã viết và tái cấu trúc giao diện người dùng vài lần, nhưng tôi đã có nguyên mẫu hoạt động sạch sẽ trong < 1 ngày. Công cụ này đã được nền tảng chéo và tất cả các cửa sổ và khung hình phù hợp với hệ thống cửa sổ bản địa (WinXP, Win2K3, Gnome, vv) - Tôi đã chắc chắn ấn tượng. Nếu tôi phải viết giao diện người dùng bằng bất kỳ ngôn ngữ nào khác, tôi chắc chắn sẽ tìm kiếm một triển khai wx.

+1

Tôi chưa thử những người khác nhưng tôi sẽ đồng ý mạnh mẽ với Joel. Hơn nữa các tài liệu với wx là thực sự tốt. Xem xét xử lý của tôi-Tôi bắt đầu làm việc với Python một cách nghiêm túc vào tháng 10, đã giới hạn kinh nghiệm lập trình bên ngoài SAS và vào tháng 12, tôi đã có một ứng dụng có giao diện GUI hoạt động tốt và ổn định. – PyNEwbie

3

Tk vẫn là một giải pháp rất khả thi. Đường cong học tập phụ thuộc rất nhiều vào bạn. Nhiều người, như tôi, có thể hoặc đã học được tất cả các nguyên tắc cơ bản của Tcl và Tk trong khoảng một ngày. Có những người vẫn chống lại cú pháp sau nhiều năm sử dụng. Tất cả đều phụ thuộc vào việc bạn giỏi như thế nào với những thứ "không cần thiết" mà bạn đã học với các ngôn ngữ truyền thống như C và Java. Nếu bạn có bất kỳ lisp trong nền của bạn, bạn có thể có thể tìm hiểu Tcl vào một buổi sáng.

Một lợi ích khác đối với Tk là thực tế nó hoạt động với Tcl, Perl, Python và Ruby (và những người khác) để bạn không bị mắc kẹt với một ngôn ngữ cụ thể. Mặc dù, không có cổng trực tiếp nào của Tk tới Java. Tìm hiểu nó bằng một ngôn ngữ và kiến ​​thức của bạn sẽ chuyển qua khá dễ dàng sang các ngôn ngữ khác. Tk đi ra khỏi hộp với Tcl và Python vì vậy đối với những ngôn ngữ đó không có gì khác để cài đặt.Tuy nhiên, tôi sẽ nói, sau khi viết vài trăm dòng mã Python/Tkinter trong vài tuần qua, nhiều, nhiều thích viết mã trong Tcl khi nói đến GUI, nhưng đó là điều cá nhân hơn bất cứ thứ gì khác .

Để biết thêm về Tk với Tcl, Ruby và Perl thấy http://www.tkdocs.com

+0

wx trông đẹp hơn Tk cho ý kiến ​​của tôi trong ví dụ Mac OS X, vì Tk chạy trên X11. Đối với Ruby nó đã được cài đặt thông qua rubygems và dễ sử dụng nhưng nó thậm chí còn dễ dàng hơn để bắt đầu với Tk kể từ khi nó được xây dựng vào Mac OS X. Tôi có lẽ sẽ đi cho wx cho các dự án Python hoặc Ruby. – davidhalldor

+1

Tk có một cổng carbon và ca cao là trong các công trình, có nghĩa là bạn không bị mắc kẹt bằng cách sử dụng X11 trên mac trừ khi bạn muốn. Truy cập trang web tkdocs.com để xem ví dụ về các tiện ích gốc trên mac và cửa sổ. Và Tcl/Tk đi kèm với OSX, do đó bạn không cần phải cài đặt bất cứ thứ gì. –

+0

Nên có một số loại huy hiệu đặc biệt để nhận được câu trả lời được chấp nhận mà không có upvotes net, như điều này cho thấy ngay bây giờ. –

1

Nếu Java là ngôn ngữ ưa thích của bạn, hãy xem xét Groovy. Nó là một ngôn ngữ động thực sự tốt đẹp nằm trên đầu trang của Java, và có một số tính năng thực sự tốt đẹp (SwingBuilder) đối với việc viết GUI. Nếu nó không phải là thực tế tôi có năng suất cao trong Tcl/tk, tôi nghĩ Groovy sẽ là lựa chọn thứ hai cá nhân của tôi mặc dù tôi không phải là một fan cuồng nhiệt của Java hay Swing. Groovy có vẻ sẽ mất nhiều thời gian cho cả hai.

Để biết thêm thông tin, hãy xem GUI Programming with Groovy.

+0

Tôi tìm thấy Groovy thực sự thú vị và tôi chắc chắn sẽ kiểm tra trên làm Swing GUI. Nhiều IDE tuyệt vời có các công cụ Swing/addons tuyệt vời như IntelliJ và Eclipse. – davidhalldor

1

Tôi khuyên bạn nên sử dụng Gtk. Nó là một bộ công cụ đẹp, đa nền tảng, đẹp mắt. Nó được thiết kế với các ràng buộc ngôn ngữ trong tâm trí và cho phép tạo các ràng buộc ngôn ngữ tốt đẹp (pygtk, ruby ​​/ gtk2, java-gnome, gtk # và hơn thế nữa). Gtk + khá dễ học.

0

Tôi chỉ muốn đề cập rằng Qt không chỉ đơn thuần là một bộ công cụ GUI. Bạn nhận được nhiều hơn nữa với nó, tất cả được tích hợp độc đáo vào khuôn khổ, rằng nó sẽ là giá trị sử dụng nó nếu bạn đang xem xét phát triển crossplatform. Vấn đề duy nhất là nếu bạn muốn sử dụng nó thông qua pyQt python python của nó, bạn sẽ phải trả tiền cho một giấy phép thương mại PyQt (đắt tiền) hoặc GPL mã của bạn.

+0

bạn có thể xác định "thêm" không. Những gì "nhiều hơn" để bạn có được bên cạnh bộ công cụ GUI? –

0

Gtk là một bộ công cụ đa nền tảng tuyệt vời. Ngoài ra, các ràng buộc cho ruby ​​là tất cả có sẵn trong một rubygem, do đó, nó rất dễ dàng để cài đặt. Gtk được sử dụng cho nhiều chương trình như nautilus, và có nhiều, nhiều khả năng. Sự cân bằng là Gtk làm được rất nhiều, một chút phức tạp.

Khi tôi viết một gui, tôi từ chối tự tay mã hóa mọi tiện ích, tôi nhấn mạnh vào môi trường đồ họa để tạo biểu mẫu của mình. Tôi nghĩ điều đó có nghĩa là sử dụng Glade hoặc QT Creator. Tôi đã thử QT Creator, và thấy nó quá chậm, đến mức tôi không thể sử dụng nó, vì vậy tôi xây dựng các biểu mẫu của mình với glade.

Khi bạn xây dựng biểu mẫu của mình dưới dạng glade, các thuộc tính của biểu mẫu được lưu trong tệp XML có thể đọc bằng ngôn ngữ của bạn. Nhiều ngôn ngữ có các mô đun "Gtk :: Builder" đọc các tệp XML và sau đó sử dụng GTK để hiển thị các biểu mẫu trên màn hình khi chạy. Vì vậy, nếu bạn sử dụng glade, bạn có thể sử dụng ngôn ngữ của sự lựa chọn của bạn (C java, ruby, python), và bạn không cần phải "tay mã" tất cả các hình thức của bạn.

Với lựa chọn ngôn ngữ, tôi sẽ chọn ruby.

Công bằng, tôi chưa thử wxRuby hoặc Tk. Nhưng tôi biết tôi không muốn viết mã GUI. Bạn có thể thấy công việc của tôi về điều này tại visualruby.net. Tôi đã sử dụng ruby ​​với glade để tạo nhiều GUI.

Các vấn đề liên quan