回答編集履歴
3
修正
test
CHANGED
@@ -44,7 +44,7 @@
|
|
44
44
|
|
45
45
|
|
46
46
|
|
47
|
-
canvas.bind("<B3-Motion>", on_erase) #
|
47
|
+
canvas.bind("<B3-Motion>", on_erase) # マウスの右ボタンをドラッグで消しゴム
|
48
48
|
|
49
49
|
```
|
50
50
|
|
2
消しゴム機能の実装例を追記
test
CHANGED
@@ -22,6 +22,36 @@
|
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
+
|
26
|
+
|
27
|
+
追記: 消しゴム機能
|
28
|
+
|
29
|
+
```python
|
30
|
+
|
31
|
+
def on_erase(e, r=20): # r=消しゴムの範囲
|
32
|
+
|
33
|
+
x = canvas.canvasx(e.x)
|
34
|
+
|
35
|
+
y = canvas.canvasy(e.y)
|
36
|
+
|
37
|
+
# カーソル周辺(指定座標範囲内)の要素を所得
|
38
|
+
|
39
|
+
for item in canvas.find_enclosed(x-r, y-r, x+r, y+r):
|
40
|
+
|
41
|
+
if canvas.type(item) == "line": # 画像を削除してしまわないように、種類判別
|
42
|
+
|
43
|
+
canvas.delete(item)
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
canvas.bind("<B3-Motion>", on_erase) # →ドラッグで消しゴム
|
48
|
+
|
49
|
+
```
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
25
55
|
----
|
26
56
|
|
27
57
|
ImageDraw への直接描画の取り消し操作は、出来ません。
|
1
sample code 追加 (repl.it)
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
deque に create_line の戻り値を追加していけば、
|
20
20
|
|
21
|
-
直近の線を delete することで undo 操作を実装出来ます。
|
21
|
+
直近の線を delete することで undo 操作を実装出来ます。[Demo](https://repl.it/@MiKLTea/TkCanvasUndo#main.py)
|
22
22
|
|
23
23
|
|
24
24
|
|