開発ブログ

第8回 tkinterからパペロを制御してみた

投稿日時:2018年11月1日 10:11

こんにちは。ピャペロンです!
今回はtkinterからパペロを制御してみたよ。

あらかじめパペロシミュレーターを動かす環境を整えておこう。第2回 Windowsからパペロシミュレーターを動かしてみた

使用するソフト
・Windows 10
・テキストエディタ(Visual Studio Code
・Google Chrome
・Python 3.7.1 ※実機で動かす場合はPython 3.4で開発しないと動作しない可能性があります。


tkinterはpythonからGUIを構築できる標準ライブラリだよ。前回はvisual studioを利用してC#でWindowsフォームアプリケーションを作ったけど今回はpythonだけで実現してみよう。
デザインはこのようにしてみたよ。

参考:tkinter — Tcl/Tk の Python インタフェース

 

tk_papero.py

from logging import basicConfig, DEBUG
basicConfig(level=DEBUG)
import sys
import tkinter as tk # tkinterをインポート
import pypapero

def action_right(): # 右を向きながら挨拶
    global papero # グローバル変数を宣言
    simulator_id, robot_name, ws_server_addr = pypapero.get_params_from_commandline(sys.argv)
    simulator_id = id_input.get() # 入力したシミュレータIDを取得
    if papero.simulatorID != simulator_id: # シミュレータIDが異なる場合に実行
        papero = pypapero.Papero(simulator_id, robot_name, ws_server_addr)
    if papero.errOccurred == 0:
        papero.send_move_head([""], ["A90T1000L", "A0T1000L"])
        papero.send_start_speech("こんにちは。パペロです。")

def action_left(): # 左を向きながら挨拶
    global papero
    simulator_id, robot_name, ws_server_addr = pypapero.get_params_from_commandline(sys.argv)
    simulator_id = id_input.get()
    if papero.simulatorID != simulator_id:
        papero = pypapero.Papero(simulator_id, robot_name, ws_server_addr)
    if papero.errOccurred == 0:
        papero.send_move_head([""], ["A-90T1000L", "A0T1000L"])
        papero.send_start_speech("おはようございます。パペロです。")

def end_app():
    papero.papero_cleanup() # Paperoオブジェクトを終了
    window.destroy() # ウィンドウを閉じる

papero = pypapero.Papero("", "", "") # Paperoクラスのインスタンスを生成
window = tk.Tk() # Tkクラスのインスタンスを生成
window.title("PaPeRo")
window.geometry("800x400") # ウィンドウサイズ指定

id_label = tk.Label(text="シミュレータID") # ラベルの作成
id_label.grid(row=0, column=0, sticky="nsew") # ラベルの配置

id_input = tk.Entry() # 入力ボックスの作成
id_input.grid(row=0, column=1, sticky="nsew")

right_button = tk.Button(text="右", command=action_right) # ボタンを作成して押したときに実行するコールバック関数を指定
right_button.grid(row=1, column=1, sticky="nsew")

left_button = tk.Button() # ボタンの作成
left_button["text"] = "左" # 属性に代入することでも指定できる
left_button["command"] = action_left
left_button.grid(row=1, column=0, sticky="nsew")


quit_app = tk.Button(text="QUIT", command=end_app)
quit_app.grid(row=2, column=0, columnspan=2, sticky="nsew")

window.grid_columnconfigure(0, weight=1) # 列の調整
window.grid_columnconfigure(1, weight=1)
window.grid_rowconfigure(1, weight=2) # 行の調整
window.grid_rowconfigure(2, weight=1)
window.mainloop()

 

シミュレータIDを入力してボタンをクリックしてみよう。 ※シミュレータIDは必ず入力してください。

 

このように動作すれば成功だ!


0

最新開発ブログ一覧  (一覧で確認
2020年8月19日 14:08
開発ブログ
第30回 パペロで赤外線アレイセンサを動かしてみよう!【中編:顔の表面温度を測ってみよう】
by 管理者
2020年7月22日 16:07
開発ブログ
第29回 パペロで赤外線アレイセンサを動かしてみよう!【前編:簡易サーモグラフィを作ろう】
by 管理者
2019年11月20日 17:11
開発ブログ
第28回 パペロでJulius4.5を実行してみた
by 管理者
2019年11月13日 09:11
開発ブログ
第27回 JuliusをPaPeRoi向けにクロスコンパイルしてみた
by 管理者
2019年9月19日 17:09
開発ブログ
第26回Linaro Toolchainでクロスコンパイルしてみた
by 管理者

コメントは受け付けていません。