9

Python 2.7でテキストベースのUIを自作しようとしていたのですが、入力についてアイデアを思いつきました。だから私はこのようなものを考え出した:input = raw_input("|" + "input: ".center(78) + "|")しかし、大まかに言うと、カーソルはずっと右にあります(私が入力する前にそれが機能しないことに気づきました:P)。問題は、画面の中央に同じ行 (両側) にテキストを入力して、「入力:」と書いた後にカーソルの種類を表示するにはどうすればよいかということです。そして、あなたが疑問に思っているなら、私はこれを使用しています:

if True:
    print c + "Hi! This is a text-based GUI!".center(78, h) + c
    print c + "-" * 78 + c
    print v + "OPTIONS".center(78) + v
    print c + "-" * 78 + c
    print v + "1 - Quit".center(78) + v
    for i in range(1, 7):
        print v + " " * 78 + v
    print c + "-" * 78 + c

インタプリタで、それはまともに見えます:

+------------------------Hi! This is a text-based GUI!-------------------------+
+------------------------------------------------------------------------------+
|                                   OPTIONS                                    |
+------------------------------------------------------------------------------+
|                                   1 - Quit                                   |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
+------------------------------------------------------------------------------+

注:私はWindows XPを使用しています

4

6 に答える 6

17

この種のテキスト UI に必要なのは、画面の基本的なレイアウトと機能、およびサポートされている入力デバイスを理解するターミナル ライブラリです。

Linux (または OSX) では、広く認識されている標準はncurses. Python は、このネイティブ ライブラリをラップするモジュールを提供します。ただし、これ (およびこれを使用するパッケージ (例: urwid)) は、Windows での使用が制限されています。

あなたの場合、ネイティブの Win32 コンソール API へのアクセスを提供する別のものを使用する必要があります。それは、cygwin、PDcurses のカスタム インストール、またはpywin32.

別の方法として、OS 固有のナンセンスについて本当に心配したくない場合は、単にasciimaticsをインストールすることができます。これにより、画面上の任意の場所にテキストを配置し、キーボード入力を処理するためのクロスプラットフォーム APIが提供されます。さらに、次のようなテキスト UI を作成するための高レベルのウィジェットを提供します。

テキスト UI ウィジェット

完全開示: はい - 私はこのパッケージの作者です。

于 2016-06-03T23:00:20.610 に答える
7

また、有用なビルドトップのcurses高レベル フレームワークも試してくださいurwid。それを使えば、リッチでカラフルなインターフェースを実現できます。ボタン編集フィールドステータス バープログレス バーなど、必要なものはすべて揃っています。作業を開始するには、Pythoncursesをインストールurwidし、そのソースを含むフォルダーが必要です (ライブラリ全体urwidをアプリケーションと共にスタンドアロン バンドルとして転送できます!)。Windows XP/7の下でもcygwin動作します。Windows XP/7 では、ご存じのとおり、curses.NET 用のポートはありませんPython

urwid ポートフォリオ

低レベルではなく、時には非常に退屈ですcurses:)

于 2013-08-11T22:49:34.307 に答える
1

このinput()種のタスクでは、関数はほとんど洗練されていません。

cursesライブラリなど、Unix 端末を制御できるライブラリを使用する方がよいでしょう。このライブラリを使用すると、基本的に単純な端末 GUI を構築できます。

さらに必要な場合は、Urwidもご覧ください。Urwid は、目の肥えたターミナル GUI 開発者向けに、より複雑な GUI ウィジェットを提供します。

curses残念ながら、このモジュールは Windows では使用できません。どうやら DOS および OS/2 ポートがあるようですが、主に POSIX 専用のライブラリです。Windows では、 などのポートを使用する必要があります。または、モジュールwcursesを試すこともできます(後者は、同様の方法で Windows CMD コンソールを駆動します)。console

于 2013-08-11T22:03:32.990 に答える
1

優れたテキストベースの UI には、curses を使用できます。

http://docs.python.org/2/library/curses.html

于 2013-08-11T22:03:43.903 に答える