2010-07-27 47 views
12

Tôi đang tạo ra một trò chơi cần có khả năng bật lên các yếu tố gui trong một bề mặt vật chất. This câu hỏi không phải là những gì tôi muốn bởi vì wxPython đi xung quanh bề mặt SDL, không phải bên trong nó. Cho đến nay tôi chỉ thấy ocemp, pguGooeyPy trong không gian sự cố này.Bộ công cụ gui nào tôi nên sử dụng với Pygame?

  • Cây gai dầu to và có màu sắc. Nó đề cập đến Python 2.3 và tập tin mới nhất tôi tìm thấy trong một trình duyệt nhanh chóng của repo cvs là 2 tuổi.
  • Tôi không thể khiến GooeyPy hoạt động (mặc dù tôi không cố gắng hết sức, trứng và Debian không phải là bạn bè) và v0.2 được cập nhật lần cuối vào tháng 2 năm 2009.
  • Tôi đã làm việc với pgu , nhưng nó dường như không được duy trì (bản cập nhật cuối cùng 11/2009 và người bảo trì ban đầu đã bỏ nó) và nó bắt đầu hiển thị tuổi của nó. Nó sử dụng các lớp kiểu cũ và ném các ngoại lệ chuỗi.

Vì vậy, câu hỏi của tôi với bạn, SO, là: Bộ công cụ gui nào tôi nên sử dụng để tạo các nút khá dễ bấm bật lên trong ứng dụng pygame của bạn? Có phát triển tích cực nào không?

Chỉnh sửa, tháng 9 năm 2011

Dường như PGU vẫn đang được duy trì. Các cam kết cuối cùng là từ 4 ngày trước.

Trả lời

2

Tôi không biết bất cứ thứ pygame gui, nhưng nó không phải là terribly khó để cuộn của riêng bạn (và hey, có thể làm cho nó mã nguồn mở!)

Nếu bạn chỉ cần thực hiện một vài các nút đơn giản, bạn có thể sử dụng GIMP hoặc Photoshop hoặc một cái gì đó khác để tạo hai (hoặc ba) hình ảnh - nút lên, xuống và có thể di chuột, sau đó bạn sẽ viết vòng lặp/xử lý sự kiện của riêng mình như sau:

  1. Lấy vị trí chuột
  2. Con trỏ chuột trên bất kỳ nút nào (và không có nút nào được nhấn)?
  3. Hiển thị hình ảnh di chuột
  4. Con chuột trên nút và nút chuột có được nhấp không?
  5. sự kiện cháy kết hợp với nút đó
  6. Xem 1

Đó là một chút đơn giản, nhưng nó ít nhất sẽ cho bạn một điểm khởi đầu (nếu không có ai khác có bất kỳ thư viện pygame GUI)

+0

Đây là những gì tôi đã cố gắng để tránh. Tôi muốn có một thư viện hiện có như pgu (được cấp phép LGPL) và cập nhật nó. Đó là 40 tệp nguồn (không tính tài liệu) và khoảng 7.000 dòng mã Python. – nmichaels

+0

Điều đó cũng có thể - tôi chưa bao giờ sử dụng pgu nên tôi không biết nó tiên tiến như thế nào - nhưng nếu nó đã làm rất nhiều công việc ban đầu, bạn có mọi lý do để tiếp tục và cập nhật điều đó. Giả sử rằng 7.000 dòng đó là đường tốt, anyway;) –

+0

Vâng, tôi nghĩ tôi có thể làm điều đó, giả sử StackOverflow không thêm bất kỳ dữ liệu ma thuật nào vào phương trình. – nmichaels

2

Mặc dù điều này là cũ, bạn thực sự không cần phải có thư viện gui cho nó, bạn chỉ cần sử dụng sprites. Đối với các nhãn bạn sẽ có một sprite và cho nó font để render và như vậy. Đối với các nút, nó kế thừa nhãn và thêm trạng thái hoạt động để phát hiện các thay đổi và gây ra điều gì đó khác xảy ra. Và một scroller hoạt động giống như một nút và chỉ cần thay đổi một nhãn hoặc một cái gì đó giá trị elses

0

Tôi đã tạo một hàm mà bạn có thể sử dụng bên trong pygame mà không cần nhập bất kỳ thư viện bổ sung nào.

def gui(x1, y1, x2, y2, button): 
    mouseX, mouseY = pygame.mouse.get_pos() 
    if mouseX >= x1 and mouseX <= x2 and mouseY >= y1 and mouseY <= y2: 
     if button: 
      return True 
     else: 
      return False 
    else: 
     return False 

Bạn gọi khi có chức năng như vậy (Tôi đang sử dụng menu làm ví dụ).

topCornerX = #X coordinate of top right corner 
topCornerY = #Y coordinate of top right corner 
bottomCornerX = #X coordinate of bottom left corner 
bottomCornerY = #Y coordinate of bottom left corner 

while menu: 
    for event in pygame.event.get(): 
     mouseLeft, mouseMiddle, mouseRight = pygame.mouse.get_pressed() 
     if gui(topCornerX, topCornerY, bottomCornerX, bottomCornerY, '''mouseLeft, mouseMiddle, or mouseRight''') 
      menu = False 

Sau đó, bạn sẽ tiếp tục với đầu ra của mình.

Điều này hoạt động bằng cách lấy tọa độ của hình chữ nhật và so sánh vị trí chuột của bạn với bên trong hình chữ nhật và là True nếu chúng nhấp vào nút chính xác và nằm bên trong hình chữ nhật. Hi vọng điêu nay co ich.

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