質問編集履歴
1
頂いたご回答を元に考えました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,45 +1,54 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
|
3
|
+
python 初心者です。
|
4
4
|
|
5
|
-
|
5
|
+
def で作った関数で読み込んだ画像ファイルを表示させようとしているのですが、
|
6
|
-
|
6
|
+
ある行の有無で、ファイル表示が左右されます。
|
7
|
+
下記コードの関数定義 def fileread 中、一番下(11行目)の
|
7
|
-
|
8
|
+
lbl.image = imageData が無いと、読み込んだファイルが表示されません。
|
8
|
-
しっくりきません。
|
9
9
|
|
10
|
-
|
10
|
+
お二人からご返信頂き考えていたのですが、
|
11
|
-
lbl.image = imageData が無いと、読み込んだファイルが表示されません。
|
12
11
|
|
13
|
-
|
12
|
+
まず、lbl は21行目の lbl = tk.Label(image=imageDatac1) で宣言しており、
|
13
|
+
fileread の外なので、グローバル変数と思っています。
|
14
14
|
|
15
|
-
|
15
|
+
次に fileread の中ですが、lbl という名前を使っている為、
|
16
|
-
|
16
|
+
10行目:グローバル変数 lbl の属性 image を imageData に変更する。
|
17
|
+
11行目:グローバル変数 lbl の属性 image を imageData にする。
|
17
|
-
|
18
|
+
のように思ってしまっています。
|
18
19
|
|
20
|
+
10行目の fileread 内の lbl.configure(image = imageData) では、
|
21
|
+
lblという変数を使っていますが、21行目で宣言している lbl には繋がっておらず、
|
22
|
+
この lbl は fileread 内のローカル変数ということでしょうか?
|
23
|
+
|
24
|
+
また、fileread内の lbl がローカル変数とすると、
|
25
|
+
11行目の lbl.image = imageData があると、何故繋がるのでしょうか?
|
26
|
+
|
27
|
+
根本的に理解できておらず申し訳ありませんが、宜しくお願い致します。
|
28
|
+
|
29
|
+
|
19
30
|
### 発生している問題・エラーメッセージ
|
20
31
|
|
21
32
|
読み込んだ画像が表示されません。
|
22
33
|
|
23
34
|
### 該当のソースコード
|
35
|
+
```python
|
24
36
|
import tkinter as tk
|
25
37
|
import tkinter.filedialog as fd
|
26
38
|
import PIL.Image
|
27
39
|
import PIL.ImageTk
|
28
40
|
|
29
|
-
|
30
41
|
def fileread():
|
31
42
|
fpath = fd.askopenfilename()
|
32
43
|
newImage = PIL.Image.open(fpath).resize((300,300))
|
33
44
|
imageData = PIL.ImageTk.PhotoImage(newImage)
|
34
|
-
lbl.configure(image = imageData)
|
35
|
-
lbl.image = imageData ### <-
|
45
|
+
lbl.configure(image = imageData) ### <- lbl はローカル変数でしょうか?
|
46
|
+
lbl.image = imageData ### <- lbl はグローバル変数でしょうか?
|
36
47
|
|
37
|
-
|
38
48
|
root = tk.Tk()
|
39
49
|
root.title("select dog, cat")
|
40
50
|
root.geometry("400x350")
|
41
51
|
|
42
|
-
|
43
52
|
btn = tk.Button(text="画像を選ぶ", command = fileread)
|
44
53
|
|
45
54
|
newImagec1 = PIL.Image.open("img\cat1.png").resize((300,300))
|
@@ -56,11 +65,11 @@
|
|
56
65
|
|
57
66
|
tk.mainloop()
|
58
67
|
|
59
|
-
|
68
|
+
```
|
60
69
|
### 試したこと
|
61
70
|
|
62
71
|
def の外で、同様の文を書いてみましたが、そちらは画像表示に影響しませんでした。
|
63
|
-
(上記コード中、2
|
72
|
+
(上記コード中、26行目)
|
64
73
|
|
65
74
|
### 補足情報(FW/ツールのバージョンなど)
|
66
75
|
|