【コラム】

Hello Worldコレクション

9 Python編 - フレキシブルなオブジェクト指向スクリプト言語

    山森丈範  [2008/06/13]

    PythonのHello World

    第9回は、オブジェクト指向のスクリプト言語であるPythonを使ってみましょう。PythonのHello Worldは、リスト1のようにprintを使って記述すればOKです。文字列の最後に改行コードを付ける必要はありません。Pythonの文字列は、Perl等とは違って、シングルクォートで囲んでもダブルクォートで囲んでも同じ意味になり、どちらも、文字列中の「\」は特別な意味で解釈されます。

    リスト1 printを使う方法(python_print)

    #!/usr/bin/python           ← Pythonスクリプトであることを指定
    
    print 'Hello World'         ← printを使ってメッセージ出力(改行コードは不要)
    

    Pythonスクリプトは、実行例1のようにchmodコマンドで実行属性を付ければ実行できます。Pythonスクリプトに拡張子を付ける場合は.pyを付けますが、本稿ではコマンド名だけをタイプして実行できるように拡張子は付けません。

    実行例1 Pythonスクリプトの実行

    $ chmod +x python_print      ← Pythonスクリプトに実行属性を付ける
    $ ./python_print             ← Pythonスクリプトを実行
    Hello World                  ← 確かにHello Worldが表示される
    $                            ← シェルのプロンプトに戻る
    

    なお、Pythonのプログラムの書式は、C言語やPerlなどとは違ってフリーフォーマットではなく、インデント(字下げ)によってブロック構造を表現します。このため、プログラムはブロックごとにインデント位置を揃えて記述する必要があります。ただし、本稿のHello Worldのような簡単なプログラムの場合、それが問題になる箇所はほとんどありません。

    また、Pythonではオブジェクト指向のクラスを使った記述が可能ですが、本稿のプログラムではクラスを使わずに記述しています。

    writeを使う方法

    標準出力に対するwriteメソッドを使ってHello Worldを出力することもできます(リスト2)。この場合、標準出力を表すsys.stdoutを使用するため、sysモジュールのインポートが必要です。また、printとは違って改行コード(\n)も付ける必要があります。

    リスト2 writeを使う方法(python_write)

    #!/usr/bin/python
    
    import sys                         ← sysモジュールをインポートする
    
    sys.stdout.write('Hello World\n')  ← 標準出力に対してwriteメソッドを実行
    

    コマンドラインから直接実行

    コマンドラインに直接Pythonのプログラムを記述する場合は、「-c」オプションを使います(実行例2)。ここでは、シェル上のシングルクォートと、Pythonプログラム内のダブルクォートとで、クォートがニ重になっています。

    実行例2 コマンドラインから直接実行

    $ python -c 'print "Hello World"'    ← pythonコマンドを直接実行
    Hello World                          ← 確かにHello Worldが表示される
    $                                    ← シェルのプロンプトに戻る
    

    OSのコマンドを呼び出す方法

    PythonからOSのコマンドを呼び出すには、リスト3のようにosモジュールをインポートしてから、systemメソッドを使います。ここでは、echoコマンドを実行してHello Worldを表示させています。

    リスト3 OSのコマンドを呼び出す方法(python_system)

    #!/usr/bin/python
    
    import os                          ← osモジュールをインポートする
    
    os.system('echo "Hello World"')    ← OS上(シェル上)のechoコマンドを実行
    

    GUIのPythonスクリプト

    Pythonのモジュールの中には、各種GUIツールキットも存在します。これらのうちの1つを使えば、PythonでGUIのプログラムが作成できます。

    まずはTkinterを使ってみましょう。Tkinterは、Pythonに標準で付属している、Tcl/Tkベースのモジュールです。TkinterによるHello Worldはリスト4のとおりです。実行時の画面は図1です。ここでは、「from Tkinter import *」の形式でインポートしていることに注意してください。もし「import Tkinter」でインポートした場合は、「Label()」ではなく「Tkinter.Label()」のように、適宜「Tkinter.」を頭に付けて記述する必要があります。

    なお、以降のGUIのプログラムには終了ボタン等がありませんので、ウィンドウマネージャのメニューなどを使って終了させてください。

    リスト4 Tkinterを使う方法(python_tkinter)

    #!/usr/bin/python
    
    from Tkinter import *                  ← Tkinterをインポート
    
    tk = Tk()                              ← トップレベルウィンドウを作成
    label = Label(tk, text='Hello World', width=22, height=5)  ← ラベルを作成
    label.pack()                           ← ラベルを配置する
    tk.mainloop()                          ← メインループを実行
    

    図1 Tkinterを使ったHello World

    次はPyGTKです。PyGTKはGTK+ベースのモジュール(モジュール名はgtk)です(リスト5、図2)。ウィンドウ破棄時に正常終了するため、destroyシグナルにはハンドラを設定する必要があります。

    リスト5 PyGTKを使う方法(python_gtk)

    #!/usr/bin/python
    
    from gtk import *                      ← gtkモジュールをインポート
    
    def destroy(*args):                    ← ウィンドウ破棄時に呼び出される
      main_quit()                          ← PyGTKを終了する
    
    window = Window(WINDOW_TOPLEVEL)       ← トップレベルウィンドウを作成
    window.connect('destroy', destroy)     ← destroyシグナルに対するハンドラを指定
    
    label = Label('Hello World')           ← 文字列を指定してラベルを作成
    label.set_size_request(160, 80)        ← ラベルのサイズを指定
    window.add(label)                      ← ウィンドウにラベルを張り付ける
    
    window.show_all()                      ← すべてを可視状態にする
    
    main()                                 ← メインループを実行
    

    図2 PyGTKを使ったHello World

    本稿の最後はPyQtです。PyQtはQtベースのモジュール(モジュール名はqt)です(リスト6、図3)。コマンドライン引数のsys.argvを受け渡すため、「import sys」を記述していますが、必要ない場合は、「QApplication(sys.argv)」のところを「QApplication([])」と記述すれば、「import sys」を省略できます。

    リスト6 PyQtを使う方法(python_qt)

    #!/usr/bin/python
    
    import sys                             ← sys.argvを使うため
    from qt import *                       ← qtモジュールをインポート
    
    app = QApplication(sys.argv)           ← Qtの初期化
    
    window = QWidget()                     ← ウィジェットwindowを作成
    window.resize(160, 80)                 ← windowのサイズを指定
    label = QLabel('Hello World', window)  ← windowを親としてしてラベルを作成
    label.setGeometry(50, 0, 160, 80)      ← ほぼ中央に文字列を配置
    
    app.setMainWidget(window)              ← windowをメインウィジェットする
    window.show()                          ← windowを可視状態にする
    
    app.exec_loop()                        ← メインループを実行
    

    図3 PyQtを使ったHello World

    関連したタグ

    新着記事

    特設サイトの情報

      求人情報

      人気記事

      一覧

      イチオシ記事

      新着記事

      特別企画

      転職ノウハウ

      あなたの仕事適性診断

      4つの診断で、自分の適性を見つめなおそう!

      Heroes File ~挑戦者たち~

      働くこと・挑戦し続けることへの思いを綴ったインタビュー

      はじめての転職診断

      あなたにピッタリのアドバイスを読むことができます。

      転職Q&A

      転職に必要な情報が収集できます

      スカウト転職する

      企業からアプローチのメッセージが届きます。

      マイナビニュースマガジン