2009-04-29 16 views
39

Tôi có một ít kinh nghiệm phát triển các ứng dụng dòng lệnh nhỏ với Python. Tôi muốn chuyển sang phát triển GUI với Python. Từ các bộ công cụ GUI có sẵn cho Python, các bộ công cụ tôi cảm thấy nghiêng nhiều nhất là wxPythonTkinter; nhưng tôi không muốn tự mình mã hóa tất cả GUI.IDE đẹp với trình thiết kế GUI cho wxPython hoặc Tkinter

Có bất kỳ IDE GUI nào tốt cho bất kỳ bộ công cụ nào không? Nó không cần phải là nguồn mở hoặc miễn phí.

Trả lời

30

Tôi sẽ chỉ nói về WxPython vì đó là bộ công cụ duy nhất tôi có kinh nghiệm. TkInter là tốt đẹp để viết các chương trình nhỏ (sau đó nó không đòi hỏi một nhà thiết kế GUI), nhưng không thực sự thích hợp cho phát triển ứng dụng lớn.

  • wxFormBuilder là thực sự tốt: nó tạo ra .XRC file bạn cần phải tải trong chương trình của bạn, và nó có thể tạo .py tập tin bằng cách subclassing chúng khi bạn sử dụng.

  • DialogBlockswxDesigner là hai phần mềm thương mại có thể tạo mã Python trực tiếp. Tôi đã không thử nghiệm nhiều vì giá của họ.

  • wxGlade là (tôi nghĩ) chưa đủ trưởng thành cho các chương trình lớn, nhưng đáng để thử.

Sau khi thử tất cả những điều này, tôi nhận ra rằng chúng có tất cả sai sót và không có gì tốt hơn là chỉ viết GUI trong trình chỉnh sửa. Vấn đề là đường cong học tập mở rộng. Nhưng sau đó bạn sẽ nhanh hơn nhiều và mã của bạn sẽ linh hoạt hơn nhiều so với khi sử dụng một nhà thiết kế GUI.

Hãy xem list of major applications được viết bằng wxPython này. Bạn có thể sẽ thấy rằng không ai trong số này sử dụng một GUI Designer, phải có một lý do cho việc này.

Sau đó, bạn hiểu gs là đúng khi nói rằng bạn chuyển sang PyQt hoặc bạn viết ứng dụng của mình bằng tay. Tôi đã có một cái nhìn tại Qt Designer trong quá khứ và nghĩ rằng đây là những gì tôi cần. Thật không may PyQt có một số hạn chế giấy phép.

+3

Làm cách nào để bạn xác định "phát triển ứng dụng lớn" và tại sao bạn nghĩ tkinter không phù hợp? Trong khi tôi chưa bao giờ sử dụng nó với một ứng dụng triệu + dòng, tôi nghĩ rằng nó quy mô về cũng như wxPython. –

0

Tôi đã sử dụng wxGlade cho một số ứng dụng quan trọng trong nhiệm vụ. Nếu bạn là một chút yếu trong wx, nó có thể được thô, nhưng một khi bạn đã quen với nó, nó là một công cụ tuyệt vời.

15

Điều này có thể không trả lời câu hỏi của bạn trực tiếp, nhưng tôi đã chọn PyQt vì không có nhà thiết kế giao diện người dùng tốt cho wxPython.

Dường như bạn viết GUI của mình bằng tay hoặc chuyển sang PyQt.

Vì Nokia và Riverbankcomputing không thể đồng ý với giải pháp LGPL, Nokia đã quyết định tạo các liên kết riêng: PySide.

+3

+1 Qt Designer là chương trình khiến tôi ghét thiết kế giao diện người dùng ít hơn. Ngoài ra, các ràng buộc PyQt dường như hơi Pythonic hơn, những người wx dường như có bit của C++ gắn bó quá nhiều. (Ví dụ: các ID sự kiện/hành động số nguyên.) Một điều nữa là sử dụng mã được tạo và các tệp tài nguyên được tải trong thời gian chạy hầu hết là tương tự. Nó không làm tổn thương rằng mã được tạo ra là rất gọn gàng và khá nhiều những gì bạn muốn viết cho mình. – millimoose

+0

PyQt có hỗ trợ giao diện tự nhiên cho Win/Mac/Linux không? –

+0

@ eyze: Một phần. Trên Mac, nó sử dụng các nguyên tố Carbon (chúng đang chuyển nó sang Cocoa ...) trên Win, chúng chuyển đổi từ các yếu tố tùy chỉnh (giao diện và cảm giác tự nhiên) sang các tiện ích gốc thực sự. Trên linux họ vẽ các phần tử tùy chỉnh, nhưng sự xuất hiện có thể được thay đổi cho tất cả các ứng dụng Qt trên một hệ thống. Một ưu điểm khác của PyQt là thư viện của nó, nó còn hơn cả một khung công tác GUI. –

4

Tôi sử dụng xrced (đi kèm với wxPython). GUI được định nghĩa trong các tệp xml, bạn có một tệp python tự động được tạo tự động hóa một số khởi tạo sau đó bạn phân lớp các lớp được tạo tự động đó và thực hiện phần còn lại của khởi tạo bằng tay. Tôi thấy rằng đây là một cách hay để pha trộn sự tao nhã của mã GUI viết tay dễ dàng với việc tạo mã GUI.

Đối với mã tôi sử dụng WingIDE, thật hữu ích khi có trình gỡ lỗi tốt và hoàn thành mã nguồn tốt khi xử lý các thư viện lớn (hoặc khung nếu bạn muốn) như wxPython.

Nếu bạn muốn tự động hóa nhiều hơn (và do đó, mã xấu hơn) thử phiên bản mới nhất của Boa, có một số Screencasts giới thiệu tốt đẹp cho nó ở ShowMeDo.com

+1

Elegance GUI bằng tay ??????? –

+3

Vâng, nếu một trong những quyền đó ...;) –

+0

Nếu mã GUI được thực hiện đúng cách nó thanh lịch như bất kỳ mã nào khác. – rectangletangle

1

Hãy thử VisualWx. Tôi nghĩ rằng các nhà thiết kế GUI là rất tốt; tuy nhiên IDE khá thô sơ (không hoàn thành mã, gỡ lỗi, v.v.). Mô hình công việc của tôi là có VisualWx và một trình soạn thảo tốt như Komodo Edit/Netbeans/etc. mở cùng một lúc và chuyển đổi giữa chúng khi cần.

+0

VisualWX trông đẹp, nhưng nó vẫn hoạt động? Trang web hiển thị phiên bản alpha từ tháng 4 năm 2007 và chỉ có 5 thư trong diễn đàn trong sáu tháng qua. –

+0

Tôi đã sử dụng nó để xây dựng các hộp thoại cấu hình cho một trò chơi tôi đã viết và nó hoạt động tốt cho điều đó. Nếu bạn muốn các công cụ cạnh chảy máu từ phiên bản wxWindows mới, sau đó nó có thể sẽ không phục vụ mục đích của bạn. Nhưng nó làm việc tốt cho tôi cho những thứ tôi đã thử, nó miễn phí, và phiên bản hiện tại có vẻ ổn định (không giống như Boa Constructor, ví dụ). Lời khuyên của tôi là chỉ cần thử nó và xem những gì bạn nghĩ. – Brandon

5

Boa Constructor có trình tạo GUI WxPython.

+1

Boa constructor là một tác phẩm tuyệt vời, giống như Delphi, nhưng nó dựa vào phân tích cú pháp mã nguồn được tạo tự động của Python để theo dõi những gì bạn thiết kế. Nếu bạn nâng cấp wxPython bạn sẽ phải tự chỉnh sửa mã được tạo tự động của mình để làm cho nó hoạt động trở lại (như các cờ khác nhau được thêm vào hoặc những thứ được đổi tên giữa các phiên bản).Đây có thể là một nỗi đau thực sự. – Nick

1

tôi sử dụng Eclipse với PyDev như IDE Python của tôi (Mà có lẽ không phải là giải pháp tốt nhất trên mạng, nhưng nó là khá phong nha)

Để phát triển GUI, tôi đã sử dụng wxGlade cho một dự án cỡ trung bình và thấy nó khá dễ sử dụng, bạn đã nắm được các khái niệm về WxPython. Tạo XML rất hữu ích cho việc tách thiết kế GUI thực tế khỏi logic chương trình.

Tất cả đều miễn phí.

+0

Vẫn chưa tìm ra cách thêm interthon interthon vào nhật thực, cài đặt đó là def không chống idiot. Nó đã cho tôi! – Iancovici

+0

Tôi không sử dụng trình thông dịch python nhiều nên tôi không thể giúp bạn ở đó: P –

+0

vừa nhận ra bạn đã đề cập đến wxGlade, +1 cho cài đặt đơn giản và môi trường thân thiện =) – Iancovici