前提・実現したいこと
教本の内容です。本来ならばpython idleで実行するところをatomで実行しました。するとerrorこそ出ませんでしたが何も起こりませんでした。なぜなのでしょうか?
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
python
1import tkinter as tk 2import tkinter.filedialog as fd 3import PIL.Image 4import PIL.ImageTk 5 6def dispPhoto(path): 7 8 newImage = PIL.Image.open(path).resize((300,300)) 9 10 ImageData = PIL.ImageTk.PhotoImage(newImage) 11 imageLabel.configure(image = imageData) 12 imageLabel.image = imageData 13 14def openFile(): 15 fpath = fd.askopenfilename() 16 17 if fpath: 18 dispPhoto(fpath) 19 20root = tk.Tk() 21root.geometry("400x350") 22 23btn = tk.Button(text=" openfile " , command = openFile ) 24imageLabel = tk.Label() 25btn.pack() 26imageLabel.pack() 27tk.mainloop() 28
試したこと
エラーが出てないため検索が難しく、そもそもエディターの使い方として正しいのかすらわかりませんでした。
補足情報(FW/ツールのバージョンなど)
OS mac
python version 3.9.3(macの中にあるものをpyenvでアップグレードしました)
> atomで実行しました。
とは、具体的に何をしたのでしょうか?
保存した後、atomrunnerでctrl+Rを押し実行しました。
Pythonコードをテキストファイルで保存して、ファイル名をたとえば「test1.py」にして、ターミナルで下記を実行したら、どうなりますでしょうか?
cd 「test1.py」があるディレクトリ
python test1.py
「python」でうまくいかなければ、「python3」で実行してみてください
↑をやってみたところ、下記を直せば実行できました
ImageData = PIL.ImageTk.PhotoImage(newImage)
↓ 先頭を小文字に
imageData = PIL.ImageTk.PhotoImage(newImage)
もっと単純なコード、たとえば下記だけなら、atom-runnerで正常に実行できるのでしょうか?
print("test")
返信遅くなってすみません。printなどの簡単なものは表示されます。
Image→imageに変えたのですが。
Traceback (most recent call last):
File "/Users/私のユーザーネーム/Desktop/python lesson/dispimage.py", line 27, in <module>
tk.mainloop()
File "/Users/私のユーザーネーム/.pyenv/versions/3.9.3/lib/python3.9/tkinter/__init__.py", line 603, in mainloop
_get_default_root('run the main loop').tk.mainloop(n)
KeyboardInterrupt
というエラーが起きました。
結局のところなにがエラーの原因なのか初心者のため検討がつかず困ってしまいました。
atom使わずにターミナルで実行してもダメですか?
ターミナルで実行できるかどうかで、どこに着目して原因を調べるのかが変わります
ターミナルでもダメなら、atomでもダメです
その場合は、まず、ターミナルでダメになる原因を探さないと
ターミナルでは実行できるなら、ターミナルでの実行環境とatomとの違いを見つけることになります
あなたの回答
tips
プレビュー