Có một khung tiêu chuẩn nào để phát triển ứng dụng GUI Python không?


20

Có rất nhiều khung để viết ứng dụng GUI bằng Python. Nhưng có một khung tiêu chuẩn quan trọng nào không? Ví dụ: chúng tôi có một gói .NET / C # trên Visual Studio.

Tôi cũng đang suy nghĩ theo quan điểm khác. Trong tương lai nếu tôi trả lời phỏng vấn cho công việc lập trình viên Python, khung GUI nào sẽ được xem xét?

Tôi cũng tự hỏi, không có IDE nào tích hợp ngôn ngữ GUI và Python. Lựa chọn hương vị là tốt nhưng sự lựa chọn quá mức trở thành một sự xao lãng.


Không. Không có "tiêu chuẩn". .NET không được chuẩn hóa. Không có cơ quan tiêu chuẩn nào đã viết một tiêu chuẩn cho .NET Có một tiêu chuẩn cho C #: ecma-i Intl.org/publications/stiterias/Ecma-334.htm . Có lẽ "tiêu chuẩn" không phải là ý bạn?
S.Lott

@ S.Lott: Xin lỗi vì thuật ngữ khó hiểu đó. Tôi có nghĩa là một cái gì đó khác nhau. Đối với các ứng dụng .NET, Visual Studio là công cụ đa năng tốt nhất bao gồm trình tạo GUI và những thứ khác. Hiếm khi mọi người tìm kiếm các lựa chọn thay thế của VS.NET. Tôi có nghĩa là trong một thuật ngữ tương tự. Bất kỳ IDE Python nào mà việc tìm kiếm một giải pháp tất cả trong một hoàn thành đều kết thúc.
RPK

Bạn đang hỏi về IDE (như Visual Studio)? Nếu vậy, thì "khung" là từ sai trong câu hỏi. Vui lòng làm rõ những gì bạn đang yêu cầu.
S.Lott

@ S.Lott: Không, tôi không hỏi về Visual Studio. Hãy để tôi làm rõ. Lấy ví dụ, ASP.NET. Nó là một khung công tác nhưng nó tích hợp rất tốt vào Visual Studio IDE. Bạn có tất cả các công cụ có sẵn trên bảng trung tâm. Có cái gì cho Python không?
RPK

Visual studio là một IDE == tất cả các công cụ để phát triển ở một nơi. "Tôi không hỏi về Visual Studio" hoàn toàn ngược lại với "Bạn có tất cả các công cụ có sẵn trên bảng trung tâm. Có cái gì cho Python không?". Bạn đang hỏi về IDE (phiên bản Python của Visual Studio) hoặc bạn đang hỏi về chính khung công tác. Hoặc, có lẽ bạn đang hỏi về cả hai. Rất khó để tìm ra câu hỏi là gì. Vui lòng cập nhật câu hỏi để nêu rất rõ những gì bạn muốn.
S.Lott

Câu trả lời:


12

Bạn có thể viết các ứng dụng GUI Win32 API bằng Python, nếu bạn muốn viết tất cả mã soạn sẵn đó: dự án PyWin32

Cá nhân, tôi thích wxPython . Nó là đa nền tảng (được hỗ trợ đầy đủ trên cả Linux và Windows) và đã xuất hiện từ khá lâu ... cơ sở hỗ trợ tốt và rất nhiều tài liệu / mã ví dụ. Nếu bạn muốn sử dụng cái này, hãy xem BoaConstructor . Đó là IDE cho wxPython (hoặc có lẽ được nêu rõ hơn, một IDE được viết bằng và cho wxPython). Đây là RAD IDE duy nhất dành riêng cho Python mà tôi đã gặp, thậm chí còn đáng nói, hãy lưu trình soạn thảo UI Qt (Trình chỉnh sửa UI của Qt có thể sử dụng cho cả C ++ và PyQT).

Như Peter đã đề cập trong câu trả lời của mình, Tk là GUI defacto cho các ứng dụng Python cũ hơn, nhưng chúng thực sự trông không đẹp cho người dùng cuối. Có một số tiện ích mở rộng giúp nó trông đẹp hơn một chút và cung cấp một số khả năng để tạo kiểu cho giao diện người dùng, nhưng trừ khi bạn đang duy trì một ứng dụng GUI cũ hơn, tôi sẽ không đề nghị làm phiền với nó.

pyGTK, cũng đã được đề cập, sẽ là một lựa chọn tốt. Nó cũng là nền tảng chéo, mặc dù tôi chưa có kinh nghiệm cá nhân nào về phát triển GTK trên Windows. PyQT sẽ là lựa chọn tốt hơn, IMO - Tôi nghĩ rằng GUI được tạo bằng thư viện Qt cả về ngoại hình và chức năng vượt trội so với những người được tạo bằng GTK. Tôi cũng thấy cơ chế sự kiện tín hiệu / khe cắm của Qt dễ làm việc hơn. YMMV.

Thực sự không có bất kỳ tiêu chuẩn nào cho việc phát triển GUI Python, ít nhất là không phải tôi đã thấy, nhưng trong số các nhà phát triển Python mà tôi đã làm việc trong nhiều năm qua, họ đã gợi ý cho tôi wxPython và PyQT hơn bất kỳ ai khác bộ công cụ. Tôi không chắc chắn nếu có bất kỳ số lượng đáng kể các vị trí phát triển GUI Python ngoài đó, phải trung thực. Hầu hết sự phát triển Python mà tôi đã thực hiện trong nhiều năm qua là ở phía máy chủ, nhưng điều đó không có nghĩa là hiện tại không có nhiều doanh nghiệp đang tìm cách đi theo con đường nguồn mở cho các ứng dụng GUI của họ.


Các ứng dụng Tkinter có thể được tạo ra để trông khá chấp nhận được, thường gần như không thể phân biệt được với các ứng dụng gốc, nếu bạn chỉ đơn giản dành thời gian để làm điều đó. Tuy nhiên, tôi sẽ đồng ý rằng wxPython trông đẹp hơn mà không cần chỉnh sửa. Cá nhân tôi vẫn thích Tkinter vì nó có vẻ đủ tốt cho hầu hết mọi người, và năng suất của tôi cao hơn so với wxPython.
Bryan Oakley

Tk (Tkinter) không hỗ trợ Unicode đầy đủ (ví dụ: định hình tập lệnh) nếu bạn dự định phát triển ứng dụng l10n / i18n.
user.dz

12

Tk từng là tiêu chuẩn, nhưng nó được cho là đơn giản và xấu xí. Sau đó, Qt trở nên khá phổ biến. Gtk cũng có thể, và bao gồm các mục yêu thích trên nền tảng Linux-ish.

Nhưng bạn đã đúng, thực sự không có câu trả lời không có trí tuệ. Rốt cuộc, sự lựa chọn là khá phổ biến trong thế giới nguồn mở.


4
Tôi sẽ chọn Qt chỉ vì nó đẹp hơn Gtk
TheLQ

1
+1 cho câu trả lời đúng. Qt là tốt đẹp và mạnh mẽ, và hai ràng buộc (giấy phép khôn ngoan) có sẵn.
BarsheD

Nó được cho là không còn xấu xí TÌM KIẾM trên Windows. Tuy nhiên, tôi không thích mã bạn phải viết trông như thế nào. Mã xấu xí. Ngoại hình, hoàn toàn bản địa, và khá hợp lý, cuối cùng.
Warren P

5

Không có "tiêu chuẩn" và tôi đồng ý - rất nhiều sự lựa chọn là một nỗi đau. Đối với IDE 'công cụ hai chiều' tích hợp cho GUI của Python, tôi cũng tự hỏi tại sao dường như không có bất kỳ thứ gì ngoài đó - có thể vì có rất nhiều công cụ GUI không ai muốn đầu tư vào IDE chỉ cho một họ

Phải nói rằng, PyQt 4.7 với P3k sẽ mang đến cho bạn GUI tuyệt vời (cũng như rất nhiều tính năng mạnh mẽ khác). Xem http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/int sinhtion.html - "Đây là hướng dẫn tham khảo cho PyQt 4.8.4. PyQt v4 là một tập hợp các ràng buộc Python cho v4 của Qt khung ứng dụng từ Nokia. "

PyQt đang được sử dụng rộng rãi và có một số cuốn sách hay về nó: xem http://www.qtrac.eu/pyqtbook.html "Lập trình GUI nhanh với Python và Qt" trong số những cuốn khác (sách đã lỗi thời một chút - cần được cập nhật cho P3k).

Có 2 vấn đề nghiêm trọng với PyQt:

1) Nó có một số đặc điểm 'unpythonic' rõ ràng, chỉ là một trình bao bọc mỏng trên libs C ++ Qt. Nhưng tôi đã đề xuất P3k-PyQt 4.7 vì một số đã được giải quyết trong các gói 'mới nhất và lớn nhất'. Kiểm tra bài này:

Vấn đề thiết kế PyQt

2) Đối với mục đích thương mại, có phí cấp phép khá cao, cả cho PyQt và Qt.

Một thay thế sắp tới cho PyQt là PySide từ Nokia, một trình bao bọc Python khác cho Qt hoàn toàn là nguồn mở (mặc dù không bao gồm giấy phép Qt).

Biết nhiều về Qt không phải là một điều xấu về thị trường và bạn sẽ nhận được điều đó từ PyQt, vì vậy tôi sẽ cân nhắc nghiêm túc (hoặc PySide) nếu bạn đang cố gắng quyết định một nền tảng GUI để trở thành chuyên gia .

Bất kể bạn chọn gì, tôi khuyên bạn nên tránh tkinter trong hầu hết các phần, mặc dù đó là 'ngoài luồng' với Python, bởi vì nó cực kỳ hạn chế và IMO có giao diện thô sơ, lỗi thời.

HTH


3

pyGTK là sinh sôi nảy nở. Nó khá dễ sử dụng và làm cho GUI trông không tệ bằng một nửa.


Cộng đồng giàu đến mức nào? Làm thế nào nhanh chóng các câu trả lời đến diễn đàn của nó?
RPK

1
@RPK, tôi không biết, tôi chưa bao giờ phải nhờ giúp đỡ, mọi thứ đều khá dễ sử dụng.
dan_waterworth

Tôi không chắc chắn "prolific" là từ đúng. "sinh con, non, quả, v.v., dồi dào; rất hiệu quả: một cây lê sinh sôi nảy nở" Có thể "phổ biến" hoặc "tuyệt vời".
S.Lott

@ S.Lott, sinh sôi nảy nở: "Tương tự tạo ra kết quả hoặc hoạt động dồi dào". (định nghĩa wiktionary thứ hai). "Phục vụ để sản xuất; kết quả tốt, hoạt động, như một bộ não sung mãn, một sự tranh cãi về sự xấu xa." (Từ điển không được sửa đổi của Webster (1913 + 1828))
dan_waterworth

sung mãn như trong "pyGTK tạo ra rất nhiều ứng dụng?" Có vẻ căng thẳng. Người ta sản xuất các ứng dụng. pyGTK là một nền tảng phổ biến, có lẽ, nhưng nó không giống như nhà sản xuất.
S.Lott

0

Gtk3 là một khung GUI rất trưởng thành. Nó có các ràng buộc Python nguyên gốc (GObject Introspection) và rất nhiều tài liệu . Nếu bạn đang làm khá nhiều GUI, hãy cân nhắc sử dụng Anjuta . Anjuta có giao diện kéo và thả để thiết lập các widget của bạn một cách dễ dàng.

WxWidgets khá tốt, tuy nhiên không có cách nào dễ dàng để các cuộc gọi lại Python được tạo động như Anjuta làm cho Gtk.

PyGtk hiện không được ủng hộ trong các ràng buộc Gtk3 với Python (GObject Introspection)

PyQt cũng là một người chơi trong Python GUI, nhưng nó không có một cộng đồng lớn.

BoaConstructor được duy trì lâu hơn và sẽ thật ngu ngốc khi sử dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.