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

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

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

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

Q&A

解決済

1回答

2066閲覧

python tkinter entryの内容を取得したい

jackie.k

総合スコア13

Python 3.x

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

0グッド

0クリップ

投稿2019/05/02 14:46

python初心者なので丁寧に教えていただけると幸いです。

まったくわかりません

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

Exception in Tkinter callback Traceback (most recent call last): File "C:\Users\taker\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1705, in __call__ return self.func(*args) File "C:\Users\taker\Documents\電物\Python\app\test.py", line 13, in sub_window ans=entry.get() NameError: name 'entry' is not defined

該当のソースコード

python

1from tkinter import ttk 2from tkinter import * 3 4def main_window(): 5 root=Tk() 6 entry=Entry() 7 button=Button(command=sub_window) 8 entry.pack() 9 button.pack() 10 root.mainloop() 11 12def sub_window(): 13 ans=entry.get() 14 print(ans) 15 16main_window() 17

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

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

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

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

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

guest

回答1

0

ベストアンサー

python

1from tkinter import ttk 2from tkinter import * 3 4def main_window(): 5 root=Tk() 6 # ここでentryという変数を作っていますが、関数の中に書いているのでローカル変数という扱いになります。 7 entry=Entry() 8 button=Button(command=sub_window) 9 entry.pack() 10 button.pack() 11 root.mainloop() 12 13def sub_window(): 14 # ローカル変数は変数を作った関数の中で有効です。なので、main_windowで作ったentryは 15 # sub_windowの中では使えないのです。 16 ans=entry.get() 17 print(ans) 18 19main_window()

python

1# たとえばこんなコードを考えます。 2def f(): 3 a = 10 4f() 5 6# 続けてこうするとエラーになります。 7print(a) 8# => NameError: name 'a' is not defined 9 10# 関数のスコープという概念を理解することがとても大切です。 11# まずはちゃんとした入門書などを読んで、基本的な言語の仕組みを理解しましょう。

python

1# 簡単な対応策としては、グローバル変数にするという手があります。 2 3from tkinter import ttk 4from tkinter import * 5 6def main_window(): 7 global entry # この一行の宣言によって、entryはグローバル変数になります。 8 # つまり、関数の外で代入しているのとスコープ的には同じ扱いになります。 9 # これで動きます。 10 root=Tk() 11 entry=Entry() 12 button=Button(command=sub_window) 13 entry.pack() 14 button.pack() 15 root.mainloop() 16 17def sub_window(): 18 ans=entry.get() 19 print(ans) 20 21main_window() 22

投稿2019/05/02 15:53

hayataka2049

総合スコア30933

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

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

jackie.k

2021/08/27 14:36 編集

非常に分かりやすい回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問