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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Cloud9

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

Python 3.x

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

Q&A

解決済

1回答

4620閲覧

tkinterを実装したのにGUIが表示されないです。

s.k

総合スコア423

Cloud9

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

Python 3.x

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

0グッド

0クリップ

投稿2017/03/26 07:56

###前提・実現したいこと
人工無脳を作るために、tkinterモジュールを使ってGUI版アプリを作りたいです。

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

Traceback (most recent call last): File "/home/ubuntu/workspace/5_1_1/ptnaForm.py", line 182, in <module> run() File "/home/ubuntu/workspace/5_1_1/ptnaForm.py", line 58, in run root = tk.Tk() File "/usr/lib/python3.4/tkinter/__init__.py", line 1854, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.TclError: no display name and no $DISPLAY environment variable

###該当のソースコード

【ptnaForm.py】

# coding:utf-8 import tkinter as tk from ptna import * import matplotlib matplotlib.use('Agg') import pylab matplotlib.pyplot.plot([1,2,3]) matplotlib.pyplot.savefig('test.png') """ グローバル変数の定義 """ 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()

【ptna.py】

from responder import * class Ptna: """ ピティナの本体クラス """ def __init__(self, name): """ Ptnaオブジェクトの名前をnameに格納 RandomResponderオブジェクトを生成してresponderに格納 @param name Ptnaオブジェクトの名前 """ self.name = name self.responder = RandomResponder('Random') def dialogue(self, input): """ 応答オブジェクトのresponse()を呼び出して 応答文字列を取得する @param input ユーザーによって入力された文字列 戻り値 応答文字列 """ return self.responder.response(input) def get_responder_name(self): """ 応答オブジェクトの名前を返す """ return self.responder.name def get_name(self): """ Ptnaオブジェクトの名前を返す """ return self.name

ご経験ある方、御指南お願いします

###補足情報(言語/FW/ツール等のバージョンなど)
Python 3.5.2
cloud9

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

cloud9上では、そのままではGUI環境は使えません。

以下の質問にてGUIを利用する手順を記載しています。
cloud9のpythonでturtleモジュール使って色々描いていきたいが。。。

投稿2017/03/26 23:55

can110

総合スコア38234

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

s.k

2017/03/27 03:44

そうなんですね。。。 ありがとうございます^ ^ セッティングしてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問