回答編集履歴

5

よだんーーー

2018/01/19 08:24

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -56,7 +56,7 @@
56
56
 
57
57
  ■余談
58
58
 
59
- if文でiの値を判断してますが、ListBoxの選択した値を取得したいなら、show_selectionは以下のコードでもOKです。
59
+ if文でiの値を判断してますが、ListBoxの選択した値を取得したいなら、show_selectionは以下のコードでもOKです。このように記述する事でListBoxの設定データ"A"と"B"に依存しなくなるため、同じような処理を別のリストボックスとラベルに対して行いたい時にshow_selection関数を再利用できます。
60
60
 
61
61
  ```Python
62
62
 

4

show_selection

2018/01/19 08:24

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -51,3 +51,23 @@
51
51
  ```
52
52
 
53
53
  モジュールスコープを汚さないのでお勧めは引数で渡す解決方法2の方です。
54
+
55
+
56
+
57
+ ■余談
58
+
59
+ if文でiの値を判断してますが、ListBoxの選択した値を取得したいなら、show_selectionは以下のコードでもOKです。
60
+
61
+ ```Python
62
+
63
+ def show_selection(lb, label):
64
+
65
+ for i in lb.curselection():
66
+
67
+ value = lb.get(i)
68
+
69
+ label.config(text=value)
70
+
71
+ break
72
+
73
+ ```

3

追記

2018/01/19 08:14

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -6,7 +6,9 @@
6
6
 
7
7
 
8
8
 
9
+
10
+
9
- 解決方法1)モジュールスコープで定義する。
11
+ 解決方法1)モジュールスコープで変数を定義する。
10
12
 
11
13
  ```Python
12
14
 
@@ -24,7 +26,7 @@
24
26
 
25
27
 
26
28
 
27
- 解決方法2)show_selectionに引数で渡す。
29
+ 解決方法2)show_selection関数に引数で渡す。
28
30
 
29
31
  ```Python
30
32
 

2

label変数を追加

2018/01/19 07:48

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -1,6 +1,8 @@
1
1
  def main():内でlbが定義されているため。[スコープ](http://programming-study.com/technology/python-understand-scopes/)(※1)がそこで閉じています。
2
2
 
3
3
  ※1 厳密には違いますが、スコープは変数が見える範囲と思って頂ければ。
4
+
5
+ なお、label変数もshow_selectionで参照しているので、そちらも定義する必要があります。
4
6
 
5
7
 
6
8
 
@@ -9,6 +11,8 @@
9
11
  ```Python
10
12
 
11
13
  lb = None
14
+
15
+ label = None
12
16
 
13
17
  def main():
14
18
 
@@ -24,7 +28,7 @@
24
28
 
25
29
  ```Python
26
30
 
27
- def show_selection(lb):
31
+ def show_selection(lb, label):
28
32
 
29
33
  for i in lb.curselection():
30
34
 
@@ -40,7 +44,7 @@
40
44
 
41
45
  ```Python
42
46
 
43
- button1 = ttk.Button(frame1, text='OK', command=lambda: show_selection(lb))
47
+ button1 = ttk.Button(frame1, text='OK', command=lambda: show_selection(lb, label))
44
48
 
45
49
  ```
46
50
 

1

追記

2018/01/19 07:47

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -1,6 +1,6 @@
1
- def main():内でlbが定義されているため。スコープがそこで閉じています。
1
+ def main():内でlbが定義されているため。[スコープ](http://programming-study.com/technology/python-understand-scopes/)(※1)がそこで閉じています。
2
2
 
3
-
3
+ ※1 厳密には違いますが、スコープは変数が見える範囲と思って頂ければ。
4
4
 
5
5
 
6
6
 
@@ -44,4 +44,4 @@
44
44
 
45
45
  ```
46
46
 
47
- モジュールスコープを汚さないのでお勧めは引数で渡すパターンの方です。
47
+ モジュールスコープを汚さないのでお勧めは引数で渡す解決方法2の方です。