С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
5 / 5 / 1
Регистрация: 19.05.2018
Сообщений: 200

Визуализация алгоритма сортировки вставкой

23.02.2019, 02:57. Показов 4333. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, стоит задача в написании визуализатора алгоритма сортировки. Сам алгоритм представляю без проблем.
В самом лайтовом случае я анимацию могу представить для статичного массива элементов, но через какие библиотеки это можно реализовать в пайтон? Через Turtle это возможно сделать или через PyGame / PyPlot / Tkinter? Подскажите какую библиотеку или подход выбрать в начале пути, чтобы я как можно меньше изобретал велосипедов с квадратными колесами и не мучился с анимацией перемещения сортируемых элементов массива.

Добавлено через 9 минут
Можно ли совместить в окне созданном на Tkinter область с канвой или полем Turtle или другой либы, в котором можно было бы рисовать анимацию?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.02.2019, 02:57
Ответы с готовыми решениями:

Сравнить число перестановок при использовании сортировки "пузырьком", методом выбора и алгоритма быстрой сортировки
Напишите программу, которая сравнивает число перестановок элементов при использовании сортировки "пузырьком", методом выбора и...

Разработка программ с использованием алгоритма сортировки методами выбора и пузырька
Задать два массива по 5 целых чисел. Отсортировать оба массива: первый – по убыванию методом пузырька, второй – по возрастанию методом...

Визуализация сортировки вставкой
Здравствуйте, есть задача визуализировать процесс сортировки вставкой. Чтобы показать элементы я закинул прогрессбары со значениями массива...

6
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
25.02.2019, 18:06
Turtle - это несерьёзно, для дошколят.
PyQt попробуйте. Там анимации точно есть.
1
5 / 5 / 1
Регистрация: 19.05.2018
Сообщений: 200
26.02.2019, 19:17  [ТС]
Начал при помощи Tkinter и отрисовываю на Canvas.
Можете подсказать как мне объявить класс прямоугольника, чтобы на нем была надпись?

Я пока что накодил это и оно отказывается работать.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import tkinter as tk
import ctypes
import time
 
from tkinter import ttk
from tkinter import*
from ctypes  import *
 
f1=("Trebuchet", 18, 'bold') 
 
 
#получим разрешение экрана
ClientWidth=(windll.user32.GetSystemMetrics(0)) 
ClientHeight =(windll.user32.GetSystemMetrics(1))
#зададим разрешение окна приложения
XRes=ClientWidth/1.5
YRes=ClientHeight/1.5
root = Tk()
 
root.resizable(0, 0)
root.title('Визуализатор алгоритма сортировки вставкой')
root.geometry('%dx%d+%d+%d' % (XRes,YRes,(ClientWidth-XRes)/2,0))
root.config(bg='azure')
c = Canvas(width=ClientWidth, height=(YRes*3/4), bg='white')
c.pack()
ctext = Canvas(width=ClientWidth, height=(YRes*0.6/4), bg='lavender')
ctext.pack()
 
 
 
PrevBtn=Button(root, text='<< Предыдущий шаг', font=f1, background="azure", 
               command=None)
NextBtn=Button(root, text='Следующий шаг >>', font=f1, background="azure",
               command=None)
RunBtn=Button(root, text='Запустить визуализацию', font=f1, background="azure",
              command=None)
 
PrevBtn.pack(side="left", fill="both", expand=True)
NextBtn.pack(side="left", fill="both", expand=True)
RunBtn.pack(side="left", fill="both", expand=True)
 
class Figure:
    def __init__(self, master, x, y, width, height, colour):
        master=tk.Canvas
        self.x=x
        self.y=y
        self.width=width
        self.height=height
        self.colour=colour
 
F1=Figure(c, 20, 50, 100, 100, "red")        
 
 
root.mainloop()
Я попытался создать хотя бы самый простой класс и что-то он не хочет работать.
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
27.02.2019, 11:16
Guitarist, не, я с Tk не работал. Только PyQt, только хардкор.
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,301
27.02.2019, 11:31
Ваш класс Figure ничего не делает, а еще вы подменяете canvas

Python
1
2
3
4
5
6
7
8
9
class Figure:
    def __init__(self, master, x, y, width, height, colour):
        self.x=x
        self.y=y
        self.width=width
        self.height=height
        self.colour=colour
        master.create_text(x,y,fill="darkblue",font="Times 20 italic bold",
                        text="Click the bubbles that are multiples of two.")
1
5 / 5 / 1
Регистрация: 19.05.2018
Сообщений: 200
27.02.2019, 13:59  [ТС]
Да я хотел через конструктор сделать, (и подумал что вызову конструктор при создании экземпляра класса и ТОГДА уже сделаю нужные вещи) но видимо я совсем неправильно понял идеи ООП )))
Кстати, я не нашел самых примитивных уроков по ООП в tkinter, я уже 1000 раз написал эти учебные программки по основам классов, т.е. типа Работник, у которого есть поля в виде Ф.И.О., зарплаты и.т.д. Уже наизусть эти примеры знаю. А только начинается какое-то реальное ООП, то чувствую что вообще не отстреливаю что происходит, т.к. не могу масштабировать полученные знания.
0
1293 / 677 / 367
Регистрация: 07.01.2019
Сообщений: 2,301
28.02.2019, 04:25
Цитата Сообщение от Guitarist Посмотреть сообщение
вызову конструктор при создании экземпляра класса и ТОГДА уже сделаю нужные вещи
Ну я тут пример привел, так-то надо больше раписать

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Figure:
    def __init__(self, master, x, y, width, height, colour):
        self.x=x
        self.y=y
        self.width=width
        self.height=height
        self.colour=colour
        self.master = master
 
    def draw(self):
        self.master.create_text(self.x,self.y,fill="darkblue",font="Times 20 italic bold",
                        text="Click the bubbles that are multiples of two.")
 
F1=Text(c, 20, 50, 100, 100, "red")        
F1.draw()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2019, 04:25
Помогаю со студенческими работами здесь

Улучшение алгоритма сортировки слиянием, алгоритмом сортировки вставкой
Изучаю алгоритмизацию по книге Томаса Кормена. Немного не понимаю что от меня хотят при решении подобных упражнений. Нужно придумать...

Доказательство корректности алгоритма сортировки вставкой
В учебнике дается доказательство алгоритма вставки через математическую индукцию Как понять эту строку : A’ = (A, A, A) ? ...

Пошаговая визуализация алгоритма сортировки
Прошу помощи в написании кода пошаговой сортировки Шелла, чтобы можно было управлять ходом самой сортировки. Например, при нажатии стрелки...

Визуализация алгоритма сортировки простым обменом (пузырьковая сортировка)
Здравствуйте, необходимо помощь в создании визуализации алгоритма сортировки простым обменом (пузырьковая сортировка). Есть готовый код, но...

Запишите рекуррентное уравнение для времени работы этой рекурсивной версии алгоритма сортировки вставкой
Как записать рекуррентное уравнение для времени работы . Сортировку вставкой можно представить в виде рекурсивной последовательности...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru