teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

他の解決策

2020/06/20 02:09

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -91,4 +91,7 @@
91
91
 
92
92
  ※ グローバル変数を使う際の注意点:
93
93
  今回の場合 btn_settei_click -> btn_kakutei_click の順に呼び出されるので問題ありませんが、
94
- 変数が作られる前に参照しようとすると NameError になります。
94
+ 変数が作られる前に参照しようとすると NameError になります。
95
+
96
+ 他の改善案:
97
+ 設定ダイアログのクラスを作り **インスタンス変数** 経由で別メソッドから参照する。

3

補足

2020/06/20 02:09

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -77,6 +77,7 @@
77
77
  auto_up_data.pack()
78
78
 
79
79
  # 内部からは参照可能
80
+ # XXX: 但しこの関数は外部からアクセスできない為、この関数のみのテストはできない
80
81
  def btn_kakutei_click():
81
82
  print("確定", auto_up_data.get())
82
83
 

2

文章の修正

2020/06/20 01:58

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -29,7 +29,7 @@
29
29
  何処が解らないのかも解らない状況だとは思いますが、
30
30
  「エラーが出ている箇所」と「エラー箇所を実行するまでに必要なコード」
31
31
  のみを纏めた小さなコードを1から書いてみると良いです。
32
- 整理してるうちに問題点がわかってくることも多いです。
32
+ 整理してるうちに問題点がわかってくることもあります。
33
33
 
34
34
 
35
35
  今回の場合であれば、問題点は「変数のスコープ」です。

1

グローバル変数を使う際の注意点

2020/06/20 01:55

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -86,4 +86,8 @@
86
86
 
87
87
  tkinter.Button(root, text="設定", command=btn_settei_click).pack()
88
88
  root.mainloop()
89
- ```
89
+ ```
90
+
91
+ ※ グローバル変数を使う際の注意点:
92
+ 今回の場合 btn_settei_click -> btn_kakutei_click の順に呼び出されるので問題ありませんが、
93
+ 変数が作られる前に参照しようとすると NameError になります。