回答編集履歴
5
細部の訂正
test
CHANGED
@@ -12,15 +12,13 @@
|
|
12
12
|
|
13
13
|
そのため、下記コードではNextボタンを配置して、描画後にソート処理が始まるようにしています。
|
14
14
|
|
15
|
-
ボタンクリック時の操作制御は考慮していませんので、連続クリックされるとソート結果がおかしくなったり、1回ごとの処理が終わったかわからなかったりしますが、そのあたりは手抜きしています。
|
15
|
+
ボタンクリック時の操作制御は考慮していませんので、連続クリックされるとソート結果がおかしくなったり、1回ごとの処理がいつ終わったかがわからなかったりしますが、そのあたりは手抜きしています。
|
16
16
|
|
17
17
|
また、描画ごとのloop_countを保持するために、DispSortクラスを新規に定義して使用しています。
|
18
18
|
|
19
19
|
|
20
20
|
|
21
21
|
最初から最後まで自動で、ということであれば、動作のきっかけとしてボタンを使って、あとはご質問記載のコードのようにloop_count分の実行をまとめて行われるとよいかと思います。
|
22
|
-
|
23
|
-
|
24
22
|
|
25
23
|
|
26
24
|
|
4
追記
test
CHANGED
@@ -12,9 +12,15 @@
|
|
12
12
|
|
13
13
|
そのため、下記コードではNextボタンを配置して、描画後にソート処理が始まるようにしています。
|
14
14
|
|
15
|
+
ボタンクリック時の操作制御は考慮していませんので、連続クリックされるとソート結果がおかしくなったり、1回ごとの処理が終わったかわからなかったりしますが、そのあたりは手抜きしています。
|
16
|
+
|
15
|
-
描画ごとのloop_countを保持するために、DispSortクラスを新規に定義して使用しています。
|
17
|
+
また、描画ごとのloop_countを保持するために、DispSortクラスを新規に定義して使用しています。
|
18
|
+
|
19
|
+
|
16
20
|
|
17
21
|
最初から最後まで自動で、ということであれば、動作のきっかけとしてボタンを使って、あとはご質問記載のコードのようにloop_count分の実行をまとめて行われるとよいかと思います。
|
22
|
+
|
23
|
+
|
18
24
|
|
19
25
|
|
20
26
|
|
3
コード再修正
test
CHANGED
@@ -1,14 +1,20 @@
|
|
1
1
|
ご質問の内容は、ソート途中が表示されず、ソート後しか見ることができないという点かと思います。
|
2
2
|
|
3
|
-
|
3
|
+
描画周りのコードを修正してみたコードを下記に記載します。
|
4
4
|
|
5
5
|
|
6
6
|
|
7
7
|
途中経過が表示されないのは、`root.mainloop()`で画面表示が始まる前に処理がすべて終わってしまっているからです。
|
8
8
|
|
9
|
-
|
9
|
+
また、グラフの描画ごとにcanvas.update()の実行も必要です。
|
10
10
|
|
11
|
+
|
12
|
+
|
13
|
+
そのため、下記コードではNextボタンを配置して、描画後にソート処理が始まるようにしています。
|
14
|
+
|
11
|
-
描画ごとのloop_countを保持するために、DispSortクラスを定義して使用しています。
|
15
|
+
描画ごとのloop_countを保持するために、DispSortクラスを新規に定義して使用しています。
|
16
|
+
|
17
|
+
最初から最後まで自動で、ということであれば、動作のきっかけとしてボタンを使って、あとはご質問記載のコードのようにloop_count分の実行をまとめて行われるとよいかと思います。
|
12
18
|
|
13
19
|
|
14
20
|
|
@@ -26,15 +32,11 @@
|
|
26
32
|
|
27
33
|
loop_count = 0
|
28
34
|
|
29
|
-
|
35
|
+
|
30
36
|
|
31
37
|
def next(self, event):
|
32
38
|
|
33
39
|
self.loop_count += 1
|
34
|
-
|
35
|
-
if not(self.loop_count < len(list)):
|
36
|
-
|
37
|
-
return
|
38
40
|
|
39
41
|
|
40
42
|
|
@@ -51,8 +53,6 @@
|
|
51
53
|
list[j] = list[j+1]
|
52
54
|
|
53
55
|
list[j+1]=temp
|
54
|
-
|
55
|
-
break
|
56
56
|
|
57
57
|
self.draw_graph(j)
|
58
58
|
|
@@ -72,7 +72,7 @@
|
|
72
72
|
|
73
73
|
for i in range(len(list)):
|
74
74
|
|
75
|
-
if i ==
|
75
|
+
if i == loop_count or i == loop_count + 1:
|
76
76
|
|
77
77
|
color="red"
|
78
78
|
|
@@ -86,7 +86,7 @@
|
|
86
86
|
|
87
87
|
y = y + height_px + distance_px
|
88
88
|
|
89
|
-
|
89
|
+
canvas.update()
|
90
90
|
|
91
91
|
|
92
92
|
|
2
誤記の修正
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
break
|
56
56
|
|
57
|
-
self.draw_graph(j)
|
57
|
+
self.draw_graph(j)
|
58
58
|
|
59
59
|
|
60
60
|
|
1
記載コードを修正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
ご質問の内容は、
|
1
|
+
ご質問の内容は、ソート途中が表示されず、ソート後しか見ることができないという点かと思います。
|
2
2
|
|
3
3
|
あまり直しすぎるのもどうかと思いましたので、色付け処理部分等はそのままにして、描画周りだけ修正してみたコードを下記に記載します。
|
4
4
|
|
@@ -26,33 +26,31 @@
|
|
26
26
|
|
27
27
|
loop_count = 0
|
28
28
|
|
29
|
-
|
29
|
+
|
30
|
-
|
31
|
-
|
32
30
|
|
33
31
|
def next(self, event):
|
34
32
|
|
33
|
+
self.loop_count += 1
|
34
|
+
|
35
|
-
if
|
35
|
+
if not(self.loop_count < len(list)):
|
36
36
|
|
37
37
|
return
|
38
38
|
|
39
39
|
|
40
40
|
|
41
|
-
self.loop_count += 1
|
42
|
-
|
43
41
|
print(str(self.loop_count)+"度目")
|
44
42
|
|
45
43
|
|
46
44
|
|
47
|
-
for j in range(0,len(
|
45
|
+
for j in range(0,len(list)-self.loop_count):
|
48
46
|
|
49
|
-
if
|
47
|
+
if list[j] > list[j+1]:
|
50
48
|
|
51
|
-
temp =
|
49
|
+
temp = list[j]
|
52
50
|
|
53
|
-
|
51
|
+
list[j] = list[j+1]
|
54
52
|
|
55
|
-
|
53
|
+
list[j+1]=temp
|
56
54
|
|
57
55
|
break
|
58
56
|
|
@@ -72,7 +70,7 @@
|
|
72
70
|
|
73
71
|
canvas.delete("graph")
|
74
72
|
|
75
|
-
for i in range(len(
|
73
|
+
for i in range(len(list)):
|
76
74
|
|
77
75
|
if i == self.loop_count or i == self.loop_count + 1:
|
78
76
|
|
@@ -82,7 +80,7 @@
|
|
82
80
|
|
83
81
|
color="blue"
|
84
82
|
|
85
|
-
canvas.create_rectangle(x, y, x +
|
83
|
+
canvas.create_rectangle(x, y, x + list[i] * width_px,
|
86
84
|
|
87
85
|
y + height_px, fill = color, outline = color, tag = "graph")
|
88
86
|
|
@@ -128,6 +126,8 @@
|
|
128
126
|
|
129
127
|
distance_px=4
|
130
128
|
|
129
|
+
list = [70,12,32,100,2,34,90,33,3,23]
|
130
|
+
|
131
131
|
|
132
132
|
|
133
133
|
dispSort.draw_graph(0)
|