質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.84%

  • Python 3.x

    4824questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • AWS(Amazon Web Services)

    1774questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

  • Cloud9

    366questions

    Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

AWS cloud9 でpythonのtkinterモジュールがimportできない

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 90

andoud0220

score 2

 前提・実現したいこと

題名の通りでAWS cloud9 でpythonのtkinterモジュールがimportできません。
検索したところ、GUI環境がないからtkinterが使用できないという回答がありました。
tkinterをインポートして実行する方法をご存じの方がいればお願いします。

 発生している問題・エラーメッセージ

ModuleNotFoundError: No module named 'tkinter'

 該当のソースコード

python3
import tkinter as tk
from ptna import *

""" グローバル変数の定義
"""
entry = None            # 入力エリアのオブジェクトを保持
response_area = None    # 応答エリアのオブジェクトを保持
lb = None               # ログ表示用リストボックスを保持
action = None           # 'オプション'メニューの状態を保持
ptna = Ptna('ptna')     # Ptnaオブジェクトを保持

def putlog(str):
    """ 対話ログをリストボックスに追加する関数
        @str  入力文字列または応答メッセージ
    """
    lb.insert(tk.END, str)

def prompt():
    """ ピティナのプロンプトを作る関数
    """
    p = ptna.name
    if (action.get())==0:
        p += ':' + ptna.responder.name
    return p + '> '


def talk():
    """ 対話を行う関数
        ・Ptnaクラスのdialogue()を実行して応答メッセージを取得
        ・入力文字列および応答メッセージをログに出力
    """
    value = entry.get()    
    # 入力エリアが未入力の場合
    if not value:
       response_area.configure(text='なに?')
    # 入力されていたら対話オブジェクトを実行
    else:
        # 入力文字列を引数にしてdialogue()の結果を取得
        response = ptna.dialogue(value)
        # 応答メッセージを表示
        response_area.configure(text=response)
        # 入力文字列引数にしてputlog()を呼ぶ
        putlog('> ' + value)
        # 応答メッセージを引数にしてputlog()を呼ぶ
        putlog(prompt() + response)
        # 入力エリアをクリア
        entry.delete(0, tk.END)

#=================================================
# 画面を描画する関数
#=================================================

def run():
    # グローバル変数を使用するための記述
    global entry, response_area, lb, action

    # メインウィンドウを作成
    root = tk.Tk()
    # ウィンドウのサイズを設定
    root.geometry('880x560')
    # ウィンドウのタイトルを設定
    root.title('Intelligent Agent : ')
    # フォントの用意
    font=('Helevetica', 14)
    font_log=('Helevetica', 11)

    # メニューバーの作成
    menubar = tk.Menu(root)
    root.config(menu=menubar)
    #「ファイル」メニュー
    filemenu = tk.Menu(menubar)
    menubar.add_cascade(label='ファイル', menu=filemenu)
    filemenu.add_command(label='閉じる', command=root.destroy)
    # 「オプション」メニュー
    action = tk.IntVar()
    optionmenu = tk.Menu(menubar)
    menubar.add_cascade(label='オプション', menu=optionmenu)
    optionmenu.add_radiobutton(
        label='Responderを表示',           # アイテム名
        variable = action,                  # 選択時の値を格納するオブジェクト
        value = 0                           # actionの値を0にする
    )
    optionmenu.add_radiobutton(
        label='Responderを表示しない',      # アイテム名
        variable = action,                  # 選択時の値を格納するオブジェクト
        value = 1                           # actionの値を0にする
    )


    # キャンバスの作成
    canvas = tk.Canvas(
                root,                       # 親要素をメインウィンドウに設定
                width = 500,                # 幅を設定
                height = 300,               # 高さを設定
                relief=tk.RIDGE,            # 枠線を表示
                bd=2                        # 枠線の幅を設定
             )
    canvas.place(x=370, y=0)                # メインウィンドウ上に配置
    """
    img = tk.PhotoImage(file = 'img1.gif')  # 表示するイメージを用意
    canvas.create_image(                    # キャンバス上にイメージを配置
        0,                                  # x座標
        0,                                  # y座標
        image = img,                        # 配置するイメージオブジェクトを指定
        anchor = tk.NW                      # 配置の起点となる位置を左上隅に指定
    )
    """

    # 応答エリアを作成
    response_area = tk.Label(
                        root,               # 親要素をメインウィンドウに設定
                        width=50,           # 幅を設定
                        height=10,          # 高さを設定
                        bg='yellow',        # 背景色を設定
                        font=font,          # フォントを設定
                        relief=tk.RIDGE,    # 枠線の種類を設定
                        bd=2                # 枠線の幅を設定
                    )
    response_area.place(x=370, y=305)       # メインウィンドウ上に配置


    # フレームの作成
    frame = tk.Frame(
                root,               # 親要素はメインウィンドウ
                relief=tk.RIDGE,    # ボーダーの種類
                borderwidth = 4     # ボーダー幅を設定
            )
    # 入力ボックスの作成
    entry = tk.Entry(
                frame,              # 親要素はフレーム
                width=70,           # 幅を設定
                font=font           # フォントを設定
            )
    entry.pack(side = tk.LEFT)      # フレームに左詰めで配置する
    entry.focus_set()               # 入力ボックスにフォーカスを当てる
    # ボタンの作成
    button = tk.Button(
                frame,              # 親要素はフレーム
                width=15,           # 幅を設定
                text='話す',        # ボタンに表示するテキスト
                command=talk        # クリック時にtalk()関数を呼ぶ
             )
    button.pack(side = tk.LEFT)     # フレームに左詰めで配置する
    frame.place(x=30, y=520)        # フレームを画面上に配置


    # リストボックスを作成
    lb = tk.Listbox(
            root,                   # 親要素はメインウィンドウ
            width=42,               # 幅を設定
            height=30,              # 高さを設定
            font=font_log           # フォントを設定
         )
    # 縦のスクロールバーを生成
    sb1 = tk.Scrollbar(
            root,                   # 親要素はメインウィンドウ
            orient = tk.VERTICAL,   # 縦方向のスクロールバーにする
            command = lb.yview      # スクロール時にListboxのyview()メソッドを呼ぶ
      )
    # 横のスクロールバーを生成
    sb2 = tk.Scrollbar(
            root,                   # 親要素はメインウィンドウ
            orient = tk.HORIZONTAL, # 横方向のスクロールバーにする
            command = lb.xview      # スクロール時にListboxのxview()メソッドを呼ぶ
          )
    # リストボックスとスクロールバーを連動させる
    lb.configure(yscrollcommand = sb1.set)
    lb.configure(xscrollcommand = sb2.set)
    # grid()でリストボックス、スクロールバーを画面上に配置
    lb.grid(row = 0, column = 0)
    sb1.grid(row = 0, column = 1, sticky = tk.NS)
    sb2.grid(row = 1, column = 0, sticky = tk.EW)

    # メインループ
    root.mainloop()



#=================================================
# プログラムの起点
#=================================================
if __name__  == '__main__':
    run()

 試したこと

ここに問題に対して試したことを記載してください。

 補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hayataka2049

    2018/05/13 19:52

    無理矢理インストールしたところでGUI環境がないので画面なんか出ないと思いますけど、どうやって使うつもりですか?

    キャンセル

  • andoud0220

    2018/05/13 20:24

    すいません。 GUI環境を作る方法があるのかと思っていました。 GUI環境がないからtkinterも入っていないということだったんですね。

    キャンセル

  • hayataka2049

    2018/05/13 20:28

    いやまあ、なんかあるにはあるらしいですけど、自己解決できない人が使うものでもないと思います。あと私はAWS詳しくないので、あんまりアドバイスできません・・・https://qiita.com/tsuemura/items/b981c18ba81a3b451e53

    キャンセル

  • andoud0220

    2018/05/13 20:32

    参考URL、ありがとうございます。助かりました。

    キャンセル

回答 1

check解決した方法

0

解決しました

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.84%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python 3.x

    4824questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

  • AWS(Amazon Web Services)

    1774questions

    Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

  • Cloud9

    366questions

    Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。