4

私は Python での Curses プログラミングに関するチュートリアルを読んでいますが、その多くは、線画記号などの拡張文字を使用する機能について言及しています。それらは 255 を超える文字であり、curses ライブラリはそれらを現在の端末フォントで表示する方法を知っています。

一部のチュートリアルでは、次のように使用すると述べています。

c = ACS_ULCORNER

...そして、次のように使用すると言う人もいます:

c = curses.ACS_ULCORNER

(これは、L を垂直に反転したような、ボックスの左上隅であるはずです)

とにかく、どの方法を使用しても、名前が定義されていないため、プログラムは失敗します。「import curses」と「from curses import *」を試しましたが、どちらも機能しません。

Curses の window() 関数はこれらの文字を利用するので、ソースがどのように機能するかを確認するためにボックスを調べみましたが、どこにも見つかりません。

4

3 に答える 3

5

local を all に設定してから、次のように出力を utf-8 としてエンコードする必要があります。

import curses
import locale

locale.setlocale(locale.LC_ALL, '')    # set your locale

scr = curses.initscr()
scr.clear()
scr.addstr(0, 0, u'\u3042'.encode('utf-8'))
scr.refresh()
# here implement simple code to wait for user input to quit
scr.endwin()

出力: あ</p>

于 2015-02-10T07:43:07.807 に答える
4

からcurses/__init__.py:

一部の定数、特に顕著なものは、が呼び出された後ACS_* にのみ C _cursesモジュールの辞書に追加されます。initscr()(SGI の curses の一部のバージョンは、 が呼び出されるまで、これらの定数の値を定義しませんinitscr() 。) このラッパー関数は、基礎となる C を呼び出し 、モジュールから定数を curses パッケージの辞書にinitscr()コピーし ます。定数が必要な場合は、 _curses' ' を実行しないでください。from curses import *ACS_*

言い換えると:

>>> import curses
>>> curses.ACS_ULCORNER
exception
>>> curses.initscr()
>>> curses.ACS_ULCORNER
>>> 4194412
于 2009-08-14T18:30:59.080 に答える