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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

2回答

10471閲覧

Python3でEntryで入力された文字列を取得する方法

neko205

総合スコア13

Python 3.x

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

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

2クリップ

投稿2017/04/15 05:23

###質問

python3でTkinterを利用したBMI計算機を作っているのですが、入力された文字列を取得する方法がわかりません。 どなたかご教授願えませんでしょうか。 当方初心者のため非常に見づらいコードですが、よろしくお願いします。

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

Exception in Tkinter callback Traceback (most recent call last): File "C:\Program Files\Python35\lib\tkinter\__init__.py", line 1550, in __call__ return self.func(*args) File "C:\Program Files\Python35\SOURCE_CODE\tk\BMI.py", line 5, in tehutehuapple Wei = weiBox.get() AttributeError: 'NoneType' object has no attribute 'get'

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

from tkinter import Tk, ttk, font, sys, messagebox def tehutehuapple(): Wei = float(weiBox.get()) Hei = float(heiBox.get()) result = Wei / (Hei*Hei) BMIresult = ttk.Label(root, text=result) BMIresult = BMIresult.place(x=120, y=250) return root = Tk() root.geometry("360x360") root.resizable(0,0) root.title("BMIを計算してしまったのですが!") root.iconbitmap("tehu.ico") font = font.Font(family='MS ゴシック', size=24) weight = ttk.Label(root, text='体重:', font=font) weight = weight.place(x=30, y=60) height = ttk.Label(root, text='身長:', font=font) height = height.place(x=30, y=150) BMI = ttk.Label(root, text='BMI:', font=font) BMI = BMI.place(x=35, y=250) calc = ttk.Button(root, text='計算!', command = tehutehuapple) calc = calc.place(x=145, y=200) end = ttk.Button(root, text='終了', command = sys.exit) end = end.place(x=145, y=330) weiBox = ttk.Entry() weiBox = weiBox.place(x=120, y=70) heiBox = ttk.Entry() heiBox = heiBox.place(x=120, y=160) root.mainloop()

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

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

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

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

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

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

guest

回答2

0

ベストアンサー

AttributeError: 'NoneType' object has no attribute 'get'

AttributeError: 'NoneType'オブジェクトに属性 'get'がありません
原因はこの2行で変数の自己代入して値がNoneになったためです。

weiBox = weiBox.place(x=120, y=70)
heiBox = heiBox.place(x=120, y=160)

weiBox.place(x=120, y=70)
heiBox.place(x=120, y=160)

ソースコードが見づらい場合はクラス化したり関数化してみてはー。

投稿2017/04/15 07:04

編集2017/04/15 07:05
umyu

総合スコア5846

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

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

neko205

2017/04/15 07:24

出来ました。 ありがとうございます。
guest

0

失礼しました。質問者さんの問題をちゃんと把握できていないコメントでした。


リファレンス的ページを見ただけで恐縮ですが

e = Entry(parent, ...)

でEntryのインスタンスを作ったら以下のように取得・設定ができるみたいです。

python

1text = e.get() <--テキストの取得 2 3e.delete(0, END) <-- クリア 4e.insert(0, "a default value") <-- テキストの挿入

ちなみに・・・こうしたことはリファレンスに書いてあるので早いうちに「マニュアル・リファレンス」の類を見る練習をしましょう(どこにあるか探すというのも訓練の一つです)。リファレンスを見つけ、それを参照してプログラムが書けるようになればプログラミングはずっと楽しくなると思います。

投稿2017/04/15 06:54

編集2017/04/15 07:07
KSwordOfHaste

総合スコア18394

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

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

neko205

2017/04/15 07:25

回答ありがとうございます。 精進します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問