質問編集履歴

1

頂いたご回答を元に考えました。

2020/05/10 15:24

投稿

yyohei
yyohei

スコア1

test CHANGED
File without changes
test CHANGED
@@ -2,35 +2,57 @@
2
2
 
3
3
 
4
4
 
5
-  python 初心者です。
5
+ python 初心者です。
6
6
 
7
7
 
8
8
 
9
-  def で作った関数で読み込んだ画像ファイルを表示させようとしているのですが、
9
+ def で作った関数で読み込んだ画像ファイルを表示させようとしているのですが、
10
10
 
11
-  ある行の有無で、ファイル表示が左右されます。
11
+ ある行の有無で、ファイル表示が左右されます。
12
12
 
13
-  調べているとグローバル変数とローカル変数使い方に起因しているように思うのですが、
13
+ 下記コードの関数定義 def fileread 中一番下(11行目)
14
14
 
15
-  しっくりきません。
15
+ lbl.image = imageData が無いと、読み込んだファイルが表示されません。
16
16
 
17
17
 
18
18
 
19
-  下記コード関数定義 def fileread 中一番下(12行目)の
19
+ お二人からご返信頂き考えていたですが
20
-
21
-  lbl.image = imageData が無いと、読み込んだファイルが表示されません。
22
20
 
23
21
 
24
22
 
25
-  逆にdef 文の外(行目)では、lbl.image = imageDatad1 が無くも動作します。
23
+ まずlbl 行目lbl = tk.Label(image=imageDatac1) で宣言しおり、
24
+
25
+ fileread の外なので、グローバル変数と思っています。
26
26
 
27
27
 
28
28
 
29
-  ずれもエラーは発生していません。
29
+ 次に fileread の中ですが、lbl とう名前を使っている為、
30
30
 
31
-  何故行目lbl.image = imageData が必要なのでしょうか?
31
+ 行目:グローバル変数 lbl の属性 image imageData に変更する。
32
32
 
33
+ 11行目:グローバル変数 lbl の属性 image を imageData にする。
34
+
35
+ のように思ってしまっています。
36
+
37
+
38
+
39
+ 10行目の fileread 内の lbl.configure(image = imageData) では、
40
+
41
+ lblという変数を使っていますが、21行目で宣言している lbl には繋がっておらず、
42
+
43
+ この lbl は fileread 内のローカル変数ということでしょうか?
44
+
45
+
46
+
47
+ また、fileread内の lbl がローカル変数とすると、
48
+
49
+ 11行目の lbl.image = imageData があると、何故繋がるのでしょうか?
50
+
51
+
52
+
33
-  初歩な事で申し訳ありませんが、宜しくお願い致します。
53
+ 根本に理解きておらず申し訳ありませんが、宜しくお願い致します。
54
+
55
+
34
56
 
35
57
 
36
58
 
@@ -44,6 +66,8 @@
44
66
 
45
67
  ### 該当のソースコード
46
68
 
69
+ ```python
70
+
47
71
  import tkinter as tk
48
72
 
49
73
  import tkinter.filedialog as fd
@@ -51,8 +75,6 @@
51
75
  import PIL.Image
52
76
 
53
77
  import PIL.ImageTk
54
-
55
-
56
78
 
57
79
 
58
80
 
@@ -64,11 +86,9 @@
64
86
 
65
87
  imageData = PIL.ImageTk.PhotoImage(newImage)
66
88
 
67
- lbl.configure(image = imageData)
89
+ lbl.configure(image = imageData) ### <- lbl はローカル変数でしょうか?
68
90
 
69
- lbl.image = imageData ### <- 何故必要なのでしょうか?
91
+ lbl.image = imageData ### <- lbl はグローバル変数でしょうか?
70
-
71
-
72
92
 
73
93
 
74
94
 
@@ -77,8 +97,6 @@
77
97
  root.title("select dog, cat")
78
98
 
79
99
  root.geometry("400x350")
80
-
81
-
82
100
 
83
101
 
84
102
 
@@ -114,7 +132,7 @@
114
132
 
115
133
 
116
134
 
117
-
135
+ ```
118
136
 
119
137
  ### 試したこと
120
138
 
@@ -122,7 +140,7 @@
122
140
 
123
141
  def の外で、同様の文を書いてみましたが、そちらは画像表示に影響しませんでした。
124
142
 
125
- (上記コード中、2行目)
143
+ (上記コード中、2行目)
126
144
 
127
145
 
128
146