Có bộ công cụ widget UI nào tốt cho Pygame không? [đóng cửa]


8

Có bộ công cụ widget hiện đại, tốt nào cho Pygame không? Tôi đã xem PGU , nhưng dường như không rõ.

Câu trả lời:


11

Không. Mỗi năm ai đó tạo một thư viện UI Pygame mới và sau đó từ bỏ nó sau một vài phiên bản, có lẽ một khi họ nhận ra rằng việc bố trí nút viết là dễ dàng nhưng viết thư viện UI hoàn chỉnh là công việc thực sự. Các guithẻ trên trang web Pygame chép một số trong số này.


8

Trở lại vào tháng 1 năm 2011, tôi đã xem xét năm bộ công cụ GUI cho pygame và cố gắng để tất cả chúng hoạt động với Python 3. Năm là: Albow, GooeyPy, PGU, pqGUI và sgc.

Tôi đã không thành công với GooeyPy , nhưng tôi đã khiến bốn người kia làm việc với Python 3. (Tôi cũng muốn thử poutine, bởi Shandy Brown, nhưng tôi không thể tìm thấy nó và tôi hoàn toàn bỏ qua Ocemp.)

Thật không may, Albow và Ocemp dường như đã chết khá nhiều. Albow được cập nhật lần cuối vào năm 2009 và Ocemp được cập nhật lần cuối vào năm 2008 (Lưu ý rằng phiên bản của Albow tại pygame.org không phải là phiên bản mới nhất.)

PGU (Tiện ích Pygame của Phil) đã được Peter Rogers tiếp quản và bảo trì, và Victor Kam đã chuyển đổi phần lớn thành Python 3. Nó được cập nhật lần cuối vào tháng 1 năm 2012 và có lẽ đã được cải thiện kể từ khi tôi kiểm tra nó. (Lưu ý rằng phiên bản PGU tại pygame.org không phải là phiên bản mới nhất.)

sgc là mới và vẫn chưa hoàn thiện khi tôi nhìn vào nó. Tuy nhiên, hiện tại nó đang được tích cực phát triển và có thể sẽ được cải thiện rất nhiều. (Lưu ý rằng phiên bản của sgc tại pygame.org không phải là phiên bản mới nhất.)

Tôi đã chạy từng cái trong số năm qua một bộ đếm Dòng mã đơn giản để đánh giá kích thước của chúng:

Đây là những kết quả (vào tháng 1 năm 2011):

    Mã Albow min = 2810, max = 4551 (max = 162% số phút)
    Albow \ demo min = 453, max = 649

    GooeyPy \ gooeypy min = 2034, max = 3941 (tối đa = 194% số phút)
    GooeyPy \ ví dụ min = 178, max = 351

    pgu \ pgu min = 2910, max = 7047 (tối đa = 242% số phút)
    bao gồm pgu \ pgu \ gui min = 1678, max = 4638 (tối đa = 276% số phút)
    pgu \ ví dụ min = 822, max = 2527

    pqGUI.py min = 1586, max = 1834 (tối đa = 116% số phút)
    Ví dụ: min = 178, max = 225

    sgc (không đầy đủ) min = 889, max = 1243 (max = 140% số phút)

Trong mỗi trường hợp, số "min" đại diện nhiều hơn cho "kích thước" của bộ công cụ, vì nó không tính khoảng trắng và các bình luận. Khi số "tối đa" rất gần với số tối thiểu, điều đó có nghĩa là không có nhiều khoảng trắng và không có nhiều nhận xét trong mã. pqGUI minh họa điều đó, bởi vì nó hầu như không có nhận xét nào cả (và cũng không có tài liệu nào), điều này quá tệ, bởi vì (IMO) nó đã tạo ra các thành phần GUI trông đẹp nhất.

Thông báo chính: tài liệu không được tính là bình luận! Điều đó làm cho PGU, sgc & GooeyPy, những người có tài liệu, trông béo hơn và ít tài liệu hơn so với thực tế, so với Albow và pqGUI, thiếu tài liệu.

Tôi thích pqGUI vì tôi thích giao diện của các widget mà nó tạo ra, nhưng nó không được hỗ trợ và không có giấy tờ, và tôi không thể tìm thấy tác giả.

Trong số năm, tính đến tháng 1 năm 2011, PGU là nhà lãnh đạo rõ ràng. Nhưng tôi không hài lòng với cả năm, vì vậy tôi đã tự viết. (Lưu ý: PGU & sgc đều đã được cập nhật và có lẽ đã được cải thiện, vì tôi đã xem xét chúng.)

Theo quan sát gượng gạo của Joe Wreschnig (ở trên), bộ công cụ GUI của tôi không đầy đủ, giống như tất cả những thứ khác. Nhưng nó có một vài điều cho nó.

  • Nó hoạt động với Python 2.6, 2.7, 3.1, 3.2, và có lẽ là 3.3.
  • Nó dựa trên sprite và sử dụng các sự kiện pygame để liên lạc, do đó nó có thể dễ dàng được đưa vào một chương trình pygame hiện có mà không cần tiếp quản vòng lặp sự kiện. Các widget được phân lớp từ pygame.sprite.Sprite.
  • Nó hỗ trợ các biểu mẫu, nút, hộp kiểm, hộp thông báo và hộp thoại không theo phương thức, menu dọc, hộp nhập văn bản và thanh trượt (thanh cuộn).
  • Nó xử lý trơn tru các điều khiển / widget chồng chéo, di chuyển và thay đổi kích thước các widget và biểu mẫu trong các biểu mẫu.

Tuy nhiên, nó thiếu một số điều khiển quan trọng mà bạn có thể muốn, như hộp thoại mở tệp / hộp tổ hợp và bảng. Các điều khiển tồn tại trông đẹp mắt, nhưng các tính năng như thanh tiêu đề & thanh cuộn là số lượng pixel cố định theo chiều rộng, thay vì chiều rộng có thể điều chỉnh. Mã được nhận xét tốt và có một ứng dụng demo với các ví dụ sử dụng, nhưng không có tài liệu hướng dẫn sử dụng phù hợp. Ngoài ra, đó là bản beta, vì vậy mọi thứ đều có thể thay đổi.

Các kết quả truy cập dòng mã cho nó là:

    DavesGUI (w / mã demo) min = 2267, max = 3055 (max = 135% số phút)
     (w / o mã demo) min = 2018, max = 2644 (max = 131% số phút)
     (w / docstrings đã nhận xét) min = 1442, max = 2644 (max = 183% số phút)

Nếu, bất chấp những hạn chế đó, ai đó muốn dùng thử, hãy liên hệ với tôi qua email. Hỏi về "DavesGUI." Địa chỉ email của tôi ở đây: http://www.burtonsys.com/email/


1

Gần đây tôi đã thấy pygtk được sử dụng với pygame và nó hoạt động rất tốt. Chỉ cần đảm bảo bạn sử dụng sự kiện phơi sáng với tiện ích vùng vẽ gtk và cập nhật dữ liệu pygame trên mỗi lần đi qua vòng lặp chính gtk. Nếu bạn muốn một bộ công cụ gui đầy đủ hoạt động trong pygame thì điều đó sẽ không xảy ra, nhưng nếu bạn muốn có một bộ công cụ gui đầy đủ để sử dụng với pygame thì bạn thật may mắn, pygtk chính là nó. Bạn thậm chí có thể sử dụng gtk bằng ngôn ngữ lập trình C và vẫn nhập pygame dưới dạng tiện ích vào vùng vẽ và cập nhật pygame trong python nếu điều đó nổi lên thuyền của bạn và bạn muốn tốc độ tăng áp. Tại sao phiền phức, chỉ cần sử dụng google và tìm câu trả lời sau đó thực hiện nó, không khó và không có vấn đề lớn. Bằng cách này pygame thực sự mát mẻ. Những kẻ đó đã bỏ rất nhiều công sức vào nó, và nó hoạt động rất hiệu quả.


0

Tôi đã thêm các yếu tố GUI rất cơ bản vào thư viện GameEngine của mình: http://aharrisbooks.net/pythonGame/ch10/ (Bao gồm trong một cuốn sách về phát triển trò chơi trong Python)

Tôi đã xây dựng các thành phần GUI rất đơn giản dựa trên sprite tiêu chuẩn: nhãn, nút, nhãn nhiều dòng và thanh cuộn nhỏ.

Những công cụ này khá cơ bản, nhưng chúng đủ cho nhiều mục đích sử dụng. Tất nhiên, thư viện hoàn toàn là nguồn mở, vì vậy hãy thoải mái sửa đổi chúng nếu bạn muốn. Phần tử giao diện người dùng tôi chưa thêm (chưa) là tiện ích nhập văn bản. Đó là bởi vì mô hình sự kiện phức tạp hơn nhiều so với các mô hình khác và tôi đã sắp hết thời hạn.

Vui lòng chơi với điều đó (cho dù bạn có sử dụng cuốn sách hay không) và cho tôi biết nếu bạn gặp phải bất kỳ rắc rối nào. Tôi sẽ cố gắng giúp đỡ.

Tôi đã có video về khóa học của mình có sẵn tại http://synapse.cs.iupui.edu/Mediasite/Catalog/

Nhìn vào khóa học N451. Đó là một trong những phát triển trò chơi.


Có thật không? "Thành phần giao diện một người dùng"? Còn về cây, danh sách, thanh menu, thanh trượt, thanh tiến trình, spinners, hộp tổ hợp, cửa sổ có thể thay đổi kích thước, panes có thể thay đổi kích thước, widget văn bản phong phú và các tab, chỉ để đặt tên cho một số? Thư viện của bạn không khác gì nửa tá những cái khác chưa bao giờ hoàn thành trên pygame.org.

Ồ Đó là một liên lạc tức giận, phải không? Đó là yếu tố một người dùng mà tôi muốn mà tôi đã không thêm. Tôi có thể xây dựng bất cứ thứ gì tôi muốn. Tôi đã không xây dựng những thứ khác bởi vì tôi không cần chúng. Bạn có thể tự thêm các công cụ của riêng mình vào khung của tôi (được thiết kế để có thể mở rộng) hoặc xây dựng bộ công cụ của riêng bạn. Nếu bạn muốn hỗ trợ tôi hoàn thành dự án này, tôi sẵn sàng nói về nó. Tuy nhiên, giống như hầu hết các nhà phát triển, tôi phải trả các hóa đơn, vì vậy các dự án tôi có thể kiếm sống dựa trên mức ưu tiên cao nhất.
Hai pi

Nó không tức giận. Tôi chỉ chỉ ra dự án của bạn không khác gì PyUI hay PGU. Đó là một API không rõ ràng để bố trí các nút đơn giản. Đây không phải là "bộ công cụ phụ tùng hiện đại, tốt".

Tôi đồng ý với bạn rằng thư viện hoàn chỉnh không tồn tại (và tôi nghĩ rằng những người khác quá phức tạp) Tôi nghĩ rằng câu trả lời là dành cho bạn để xây dựng thư viện mà bạn muốn thay vì gạt bỏ những nỗ lực của những người đã tự do trao cho họ làm việc cho cộng đồng Thư viện của tôi được thừa nhận là rất nhỏ, vì tôi không cần bất cứ thứ gì khác. Tôi thích nó nếu bạn muốn thêm các tính năng bạn muốn vào thư viện này hoặc bất kỳ thư viện nào khác, bởi vì tôi đồng ý rằng thư viện GUI 'đầy đủ' có thể hữu ích. Tuy nhiên, các trò chơi thường không có cùng nhu cầu như các ứng dụng GUI khác.
Hai pi

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.