teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

補足

2020/07/18 11:48

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -26,7 +26,7 @@
26
26
  ----
27
27
  追記: ttk.Notebook でのドロップ確認用のコード
28
28
 
29
- ※ ttk=0 の部分に True を渡しています。ここはtkdnd.py側で修正済であれば適宜対処。
29
+ drop_target_registerのttk=0 の部分に True を渡しています。ここはtkdnd.py側で修正済であれば適宜対処。
30
30
 
31
31
  ```python
32
32
  #!/usr/bin/env python3.7

3

修正点についてあいまいな点を補足

2020/07/18 11:47

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -26,6 +26,8 @@
26
26
  ----
27
27
  追記: ttk.Notebook でのドロップ確認用のコード
28
28
 
29
+ ※ ttk=0 の部分に True を渡しています。ここはtkdnd.py側で修正済であれば適宜対処。
30
+
29
31
  ```python
30
32
  #!/usr/bin/env python3.7
31
33
 
@@ -42,7 +44,7 @@
42
44
  root.geometry("400x400")
43
45
 
44
46
  note = ttk.Notebook(root)
45
- note.drop_target_register(True, tkdnd.DND_FILES)
47
+ note.drop_target_register(True, tkdnd.DND_FILES) # XXX
46
48
  note.dnd_bind('<<Drop>>', drop)
47
49
  note.pack(fill=BOTH, expand=True)
48
50
 

2

ttk.Notebookドロップ確認用のコードを追加

2020/07/18 11:46

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -16,12 +16,41 @@
16
16
 
17
17
  DND_TEXT は有効そうなので、テキストのドロップは出来ました。
18
18
 
19
-
20
- ```
21
-
22
19
  ----
23
20
  ※ 但し、dnd_test_ttk.py だけでドロップ出来ないという現象は、上記のコードからは確認できません。
24
21
  双方のテストをした時に、ファイルとテキストで異なっていた可能性はないでしょうか。
25
22
 
26
23
  DND_FILES, DND_TEXT はこのコードでは未定義の変数でエラーになるはずですが、
27
- 他に、投稿の際に編集したということはありませんか?
24
+ 他に、投稿の際に編集したということはありませんか?
25
+
26
+ ----
27
+ 追記: ttk.Notebook でのドロップ確認用のコード
28
+
29
+ ```python
30
+ #!/usr/bin/env python3.7
31
+
32
+ import sys
33
+ from tkinter import *
34
+ from tkinter import ttk
35
+
36
+ import tkdnd
37
+
38
+ def drop(event):
39
+ print(event.data)
40
+
41
+ root = tkdnd.Tk()
42
+ root.geometry("400x400")
43
+
44
+ note = ttk.Notebook(root)
45
+ note.drop_target_register(True, tkdnd.DND_FILES)
46
+ note.dnd_bind('<<Drop>>', drop)
47
+ note.pack(fill=BOTH, expand=True)
48
+
49
+ frame = ttk.Frame(note)
50
+ note.add(frame, text="Page1")
51
+
52
+ button = ttk.Button(note, text="OK")
53
+ note.add(button, text="Page1")
54
+
55
+ root.mainloop()
56
+ ```

1

文章の修正

2020/07/18 11:30

投稿

teamikl
teamikl

スコア8817

answer CHANGED
@@ -4,7 +4,7 @@
4
4
  ファイルはドロップできないけどテキストは可能だったりしませんか?
5
5
 
6
6
  上記の tkdnd.py を使うとどちらのコードもファイルのドロップは出来ず、
7
- 公式?(リンク先からダウンロード) の TkinterDnD2 では、ttk で利用できました。
7
+ 公式?(リンク先からダウンロード) の TkinterDnD2 では、ttk で利用できました。
8
8
 
9
9
  差分を確認すると、tkdnd.py には 引数 ttk が追加されてました。
10
10
 
@@ -12,9 +12,13 @@
12
12
  def drop_target_register(self, ttk=0, *dndtypes):
13
13
  ```
14
14
 
15
- DND_FILES が ttk 引数に入ってしまい、dndtypes に渡ない。
15
+ 原因: DND_FILES が ttk 引数に入ってしまい、dndtypes に渡っていない。
16
+
16
17
  DND_TEXT は有効そうなので、テキストのドロップは出来ました。
17
18
 
19
+
20
+ ```
21
+
18
22
  ----
19
23
  ※ 但し、dnd_test_ttk.py だけでドロップ出来ないという現象は、上記のコードからは確認できません。
20
24
  双方のテストをした時に、ファイルとテキストで異なっていた可能性はないでしょうか。