Help us understand the problem. What is going on with this article?

Cursesで作るROSのメッセージモニター

More than 1 year has passed since last update.

まだ製作途中ですが、コードは以下のリポジトリにあるので、興味があれば見てみてください。
https://github.com/nakano16180/ros_control

きっかけ

ROSでメッセージを確認したいとき、rostopic echoを使っていました。
しかし、複数メッセージを確認したいときにrostopic listをしてからrostopic echoをすると、echoで確認したメッセージで端末が埋まってしまい、その前のrostopic listの結果が流れてしまう

なんとかできないかと調べていると、こんな記事を見つけました。
コンソールへの出力を上書きしてゆく方法

これだ!でもこれ、1行しかだめじゃん(泣)
複数行上書き出来る方法はないかと思い、もう少し調べているとCursesというライブラリを見つけました。

Cursesとは

Pythonの標準ライブラリで、組み込み関数のinputやprintを使うより高度なCUIアプリケーションを作成できます。

とりあえずコードを見てみる

sample.py
#!/usr/bin/env python3

import curses
import time

if __name__ == "__main__":
    try:
        stdscr = curses.initscr()
        curses.noecho()

        for t in range(0, 10):
            stdscr.clear()
            stdscr.addstr(0, 0, 'Program will be terminated after %s seconds' % (10 - t))
            stdscr.refresh()
            time.sleep(1)
    except:
        # Exception by Ctrl + C
        pass
    finally:
        curses.echo()
        curses.endwin()

コードはここから→Python:cursesライブラリの使い方

コード中のstdscr.addstr(y, x, string)という形で、指定した座標に文字を表示させることができます。
stdscr.addstr()のx,yを変更しながら追加していけば表示させる内容も増えるので、割りと使いやすいのではないかと思いました。

実行結果は以下の通り
curses_sample1.gif

おわりに

今回紹介したCursesを調べている途中で、TUI(Text User Interface)というものを知りました。ちょっとしたコマンドや小さなツールでもUIなどにこだわってみると開発も楽しくなるのではないかと思いました。

今後の目標として、topicのリストとtopic内容の表示を同時にできたらいいなと思います。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away