2012-07-01 17 views
6

Khi tôi sử dụng lệnh less trong Thiết bị đầu cuối Mac của mình, tôi hiển thị một đoạn 23 hàng của tệp được chỉ định. Nếu tôi di chuyển xuống tệp, sau đó cuộn lên trong cửa sổ đầu cuối, tôi không thấy bất kỳ nội dung tệp nào trước lát hiện tại. Thay vào đó, tôi thấy các lệnh mà tôi đã nhập trước khi sử dụng less.Làm cách nào để tạo giao diện ASCII có khung tĩnh trong Python?

Tôi muốn sử dụng hiệu ứng này hoặc hiệu ứng tương tự để tạo giao diện trò chơi ascii chỉ hiển thị màn hình hiện tại, không có lịch sử. Tôi sẽ vẽ các khung hình trên màn hình và chỉ thay đổi văn bản hoặc các tùy chọn trong các khung đó. Điều này là rất phổ biến trong các hệ thống cũ hơn chạy chủ yếu hoặc hoàn toàn trong môi trường dòng lệnh.

Có mô-đun Python cung cấp mô-đun này không? Đó có phải là một hiệu ứng mà tôi có thể hoặc nên thực hiện bản thân mình?

Dưới đây là một số yếu tố màn hình ví dụ có thể hưởng lợi từ hiệu ứng này.

+-------------------------------------------------------------------+ 
|                 | 
| Dialog dialog dialog dialog dialog dialog dialog dialog dialog | 
| dialog dialog dialog dialog dialog dialog dialog dialog dialog | 
| dialog dialog dialog dialog dialog dialog dialog dialog dialog | 
| dialog dialog dialog dialog dialog dialog dialog dialog dialog | 
| dialog dialog dialog dialog.          | 
|                 | 
|                 | 
|                 | 
+--------------------+---------------+------------------------------+ 
| Attack   |  South  |   HP/Max MP/Max | 
| > Cast Magic  |  -  | Tom: 120/120 60/91 | 
| Use Item   |  New  | > Dick: 27/133 47/47 | 
| Tactics   | Schwartzton | Harry: 87/104 16/113 | 
+--------------------+---------------+------------------------------+ 

Trả lời

6

Tôi khuyên bạn nên xem xét mô-đun curses. Đó là một giao diện cho thư viện ncurses, được sử dụng cho mục đích chính xác này (tôi tin rằng nhiều ứng dụng đầu cuối được viết trong đó). Các documentation là khá phong nha, và có một số tốt đẹp tutorials mà cũng nên đặt bạn đi đúng hướng.

(Hoặc sử dụng tự do là \r.) Tôi sẽ đề xuất mô-đun curses vì nó sẽ cung cấp sự linh hoạt hơn cho những gì bạn đang tìm kiếm.

EDIT: Nếu bạn quan tâm đến việc tạo ứng dụng đa nền tảng, hãy nhớ rằng mô-đun curses chỉ khả dụng trên các hệ thống * nix. Theo tài liệu:

Không ai đã tạo cổng Windows của mô-đun curses.

Hướng dẫn đó đề xuất this library để sử dụng trên Windows, mặc dù ngày trên trang tải xuống có bất kỳ dấu hiệu nào, nó chưa được cập nhật trong một khoảng thời gian hợp lý. Bạn có thể nhìn vào this module, trông gần đây hơn đáng kể.

+0

Điều này thật tuyệt! May mắn thay, tôi đang ở trong một cộng đồng Unix/Linux, vì vậy tôi có thể tập trung vào đó. Tôi sẽ đánh dấu module 'console' để sử dụng sau này. –

+0

Bài đăng này khá cũ và trang lời nguyền bây giờ cho biết rằng cổng Windows tồn tại ở [trang này] (https://pypi.python.org/pypi/UniCurses). – KGVT

3

Điều bạn đang nói đến là curses. Nó là một mô-đun Python giao diện với ncurses. Hướng dẫn tốt nhất mà tôi đã tìm thấy để sử dụng curses là điều này: http://www.dev-explorer.com/articles/python-with-curses

Một số chương trình phổ biến sử dụng lời nguyền (mặc dù từ một ngôn ngữ khác) là aptitude và nano.

+0

lời nguyền sử dụng năng khiếu và nano. vim sử dụng termcap (không phải lời nguyền). wget và mực được hardcoded (không có lời nguyền). –

+0

@ThomasDickey Tốt để biết, cập nhật! – C0deH4cker

1

Tôi cũng đang đấu tranh với vấn đề này. Tôi muốn có một giải pháp nền tảng đơn giản, vì vậy tôi đã mở rộng asciimatics để cung cấp một bộ widgets để tạo giao diện người dùng dựa trên biểu mẫu như thế này. Ví dụ:

Text UI widgets

Mã kết quả nên được khá súc tích và làm việc trên bất kỳ hệ điều hành hiện đại (bao gồm Windows, Linux và OSX) mà không cần cài thêm thư viện bản xứ. Như bạn có thể thấy từ contact list sample các tiện ích tiêu chuẩn dễ dàng đặt ra và sẽ cung cấp hầu hết các nhu cầu của bạn.

-1

Nếu bạn đang muốn tạo một trò chơi ascii, asciimatics có thể sẽ không hoạt động, vì nó chủ yếu cho những thứ như biểu mẫu. Sử dụng lời nguyền chắc chắn là con đường để đi.Mặc dù không có một chính thức nguyền rủa cổng cho các cửa sổ, có một không chính thức tốt tại https://www.lfd.uci.edu/%7Egohlke/pythonlibs/#curses, vì vậy hãy chắc chắn để kiểm tra xem ra.

+0

Bạn đã đọc tài liệu cho asciimatics chưa ?! API cấp thấp làm tất cả những điều nguyền rủa cung cấp cho bạn và chạy trên Windows ngay lập tức. –

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