回答編集履歴

3

2018/09/17 08:23

投稿

ads3hcgff
ads3hcgff

スコア16

test CHANGED
@@ -46,11 +46,11 @@
46
46
 
47
47
  0, # y座標
48
48
 
49
- image=img, # 配置するイメージオブジェクトを指定
50
-
51
- tag="illust", ここをローカル変数に入れたまま代入すると動きませんw無能すぎる・・
49
+ image=img, ここをローカル変数に入れたまま代入すると動きませんw無能すぎる・・
52
50
 
53
51
  anchor=tk.NW # 配置の起点となる位置を左上隅に指定
52
+
53
+ tag="illust",
54
54
 
55
55
  )
56
56
 

2

変更事項

2018/09/17 08:23

投稿

ads3hcgff
ads3hcgff

スコア16

test CHANGED
@@ -4,33 +4,37 @@
4
4
 
5
5
 
6
6
 
7
- たぶんtk()でインスタンス化してからloopのなかは実は一回しか読み込まれてない?
7
+ tk()でインスタンス化してからloopのなかは実は一回しか読み込まれてない?
8
8
 
9
9
  試しにcreate_imageを関数の外に出したら無理でした。
10
10
 
11
11
 
12
12
 
13
- またこの原因とは別に
14
-
15
- tkinterbookに
16
-
17
- 'The application must keep a reference to the image object.'
18
-
19
- とあるのでなんかグローバル変数に格納しとかないとすぐGCがおきるらしい?
20
-
21
- それか同じ関数内(スコープ内)に入れる必要があったとか?
22
-
23
- その割にはグローバルに格納しても関数外でcreate_imageを使ったら失敗したしよくわからん。
24
13
 
25
14
 
26
15
 
27
- tk loop間で一回しか読み込まれない説
28
16
 
17
+ ### 追記
18
+
19
+ 勝手ながらもう一つ重要な項目が見つかったので載せておきます。
20
+
29
- create_imageはGCの関係からmg = ImageTk.PhotoImage(img) と同じスコープ内に入れる説
21
+ [こちらの記事](http://lrcgf.hatenablog.com/entry/2013/06/30/222918)
30
22
 
31
23
 
32
24
 
25
+ create_canvasの引数 imageにはローカル変数ではだめで、グローバル変数を入れなきゃだめらしい
26
+
27
+ ここに入れるのはImageTk.PhotoImage()で作成したオブジェクトなんですが
28
+
29
+ どうやらこれをローカル変数に入れたままcanvas_create関数に入れるとうまく動きません。
30
+
31
+ 理由はImageTk.PhotoImage()をローカルに入れると一瞬でGCが起きるらしいです。
32
+
33
- どっちなんしょーか
33
+ 意味不明、この仕様・・・・
34
+
35
+ これはtkinterが悪いのかpythonの仕様上そうなってしまうのかそれともPILが悪いのか謎・・・
36
+
37
+ 根本的な理由はtkinterにあるらしいのですが・・・やれやれw
34
38
 
35
39
 
36
40
 
@@ -44,7 +48,7 @@
44
48
 
45
49
  image=img, # 配置するイメージオブジェクトを指定
46
50
 
47
- tag="illust", # タグで引を追加する
51
+ tag="illust", ここをローカル変に入れたまま代入すると動きませんw無能すぎる・・
48
52
 
49
53
  anchor=tk.NW # 配置の起点となる位置を左上隅に指定
50
54
 

1

更新

2018/09/17 08:22

投稿

ads3hcgff
ads3hcgff

スコア16

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  とあるのでなんかグローバル変数に格納しとかないとすぐGCがおきるらしい?
20
20
 
21
- それが鯨飲で同じ関数内(スコープ内)に入れる必要があったとか?
21
+ それ同じ関数内(スコープ内)に入れる必要があったとか?
22
22
 
23
23
  その割にはグローバルに格納しても関数外でcreate_imageを使ったら失敗したしよくわからん。
24
24
 
@@ -31,20 +31,6 @@
31
31
 
32
32
 
33
33
  どっちなんでしょーかねえ
34
-
35
-
36
-
37
-
38
-
39
- いやぁしかしいくらスクリプト言語とはいえGUIの開発に手を抜きすぎでしょ
40
-
41
- あ〇がパッケージを作ると利用する側が苦労しちゃうんですよね。
42
-
43
- なんでこんな使いにくいパッケージが標準なんだか・・・
44
-
45
- 日本語の情報も少ない、体系立てた日本語の本もない
46
-
47
-
48
34
 
49
35
 
50
36