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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

573閲覧

def 得た値を 次のdefに読み取らせる

sho.F

総合スコア5

Tkinter

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/01/17 07:43

前提・実現したいこと

応力の算定式を作成しています。
「Checkbutton」で「True」になった項目から、それに対応する公式を呼び出し(def cal)、その関数の中に特定の数値を入力し(def cal_load)、その数値を「def cal」で呼び出した公式に代入した値を(def cal_form)、ラベルに定義して表示させたい(def cal_Ans)

ここに質問の内容を詳しく書いてください。
関数にて表示させた数値を違う関数に読み取らせることは不可能でしょうか。
初めて参考書を読み解きながら、プログラム作成しています。
ご教授いただければ幸いです。

(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

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

santei ボタンを押すとAは見つかりませんと表示される。
def cal_load の中で自分では定義できていると思っているのですが・・・

エラーメッセージ

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\python\lib\tkinter_init_.py", line 1883, in call
return self.func(*args)
File "sample.py", line 85, in cal_form
P = float(A.get())
NameError: name 'A' is not defined

該当のソースコード

import

1Sb_stress = tk.Tk() 2Sb_stress.title('sample') 3 4check1 = tk.BooleanVar() 5check1.set(False) 6ch1 = tk.Checkbutton(Sb_stress, variable=check1, text = 'AAA').grid(column=0,row=5) 7 8check2 = tk.BooleanVar() 9check2.set(False) 10ch2 = tk.Checkbutton(Sb_stress, variable=check2, text = 'BBB').grid(column=1,row=5) 11 12check3 = tk.BooleanVar() 13check3.set(False) 14ch3 = tk.Checkbutton(Sb_stress, variable=check3, text = 'CCC').grid(column=2,row=5) 15 16check4 = tk.BooleanVar() 17check4.set(False) 18ch4 = tk.Checkbutton(Sb_stress, variable=check4, text = 'DDD').grid(column=0,row=6) 19 20check5 = tk.BooleanVar() 21check5.set(False) 22ch5 = tk.Checkbutton(Sb_stress, variable=check5, text = 'EEE').grid(column=1,row=6) 23 24check6 = tk.BooleanVar() 25check6.set(False) 26ch6 = tk.Checkbutton(Sb_stress, variable=check6, text = 'FFF').grid(column=2,row=6) 27 28def cal(): 29 if check1.get() == True: 30 Result1_1 = tk.Label(Sb_stress, text='A11').grid(column=0,row=7) 31 if check1.get() == True: 32 Result1_2 = tk.Label(Sb_stress, text='A22').grid(column=1,row=7) 33 if check1.get() == True: 34 Result1_3 = tk.Label(Sb_stress, text='A33').grid(column=2,row=7) 35 36 if check2.get() == True: 37 Result2_1 = tk.Label(Sb_stress, text='B11').grid(column=0,row=8) 38 if check2.get() == True: 39 Result2_2 = tk.Label(Sb_stress, text='B22').grid(column=1,row=8) 40 if check2.get() == True: 41 Result2_3 = tk.Label(Sb_stress, text='B33').grid(column=2,row=8) 42 43 if check3.get() == True: 44 Result3_1 = tk.Label(Sb_stress, text='C11').grid(column=0,row=9) 45 if check3.get() == True: 46 Result3_2 = tk.Label(Sb_stress, text='C22').grid(column=1,row=9) 47 if check3.get() == True: 48 Result3_3 = tk.Label(Sb_stress, text='C33').grid(column=2,row=9) 49 50 if check4.get() == True: 51 Result4_1 = tk.Label(Sb_stress, text='D11').grid(column=0,row=9) 52 if check4.get() == True: 53 Result4_2 = tk.Label(Sb_stress, text='D22').grid(column=1,row=9) 54 if check4.get() == True: 55 Result4_3 = tk.Label(Sb_stress, text='D33').grid(column=2,row=9) 56 57 if check5.get() == True: 58 Result5_1 = tk.Label(Sb_stress, text='E11').grid(column=0,row=10) 59 if check5.get() == True: 60 Result5_2 = tk.Label(Sb_stress, text='E22').grid(column=1,row=10) 61 if check5.get() == True: 62 Result5_3 = tk.Label(Sb_stress, text='E33').grid(column=2,row=10) 63 64 if check6.get() == True: 65 Result6_1 = tk.Label(Sb_stress, text='F11').grid(column=0,row=11) 66 if check6.get() == True: 67 Result6_2 = tk.Label(Sb_stress, text='F22').grid(column=1,row=11) 68 if check6.get() == True: 69 Result6_3 = tk.Label(Sb_stress, text='F33').grid(column=2,row=11) 70 71tk.Button(Sb_stress, text='shiki', command=cal).grid(column=0,row=15) 72 73def cal_load(): 74 if check1.get() == True: 75 label_A = tk.Label(Sb_stress, text='kajuu') 76 label_A.grid(column=0,row=16) 77 A = tk.Entry(Sb_stress) 78 A.grid(column=0,row=17) 79 80tk.Button(Sb_stress, text='kajuuko', command=cal_load).grid(column=0,row=20) 81 82def cal_form(): 83 if check1.get() == True: 84 P = float(A.get()) 85 RA = P / 2 86 Ans = tk.Label(Sb_stress, text='RA').grit(column=0,row=21) 87 88tk.Button(Sb_stress, text='santei', command=cal_form).grid(column=0,row=25) 89 90def cal_Ans(): 91 labelResultRF_A['text'] = RA 92 labelResultRF_A = tk.Label(Sb_stress, text='---') 93 labelResultRF_A.grid(column=0,row=26) 94 95 96tk.Button(Sb_stress, text='kekka', command=cal_Ans).grid(column=0,row=30) 97Sb_stress.mainloop() 98 99コード
ソースコード

試したこと

ここに問題に対して試したことを記載してください。
関数の中に定義した数値は読めないのかと思い
Aを関数ではなくラベルで最初からさせてみましたが駄目でした・・・

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

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

変数 A は関数内ローカル変数名なので、外部からアクセスできませんし、関数から復帰したときに消滅します。

check1 = tk.BooleanVar()

のようにグローバル変数として

kajuu = tk.StringVar()

を用意し、

A = tk.Entry(Sb_stress)

の代わりに

A = tk.Entry(Sb_stress, textvariable=kajuu)

として、入力した文字列を kajuu に格納するようにすれば、

P = float(kajuu.get())

で値を取り出せます。

投稿2020/01/17 08:04

編集2020/01/17 08:05
shiracamus

総合スコア5406

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

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

sho.F

2020/01/17 08:52

ご教授ありがとうございます。 グローバル変数とローカル変数を知りませんでした。 助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問