回答編集履歴
5
よだんーーー
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
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
追記
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変数を追加
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
追記
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の方です。
|