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

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

23.02.2019, 02:57. Показов 4342. Ответов 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
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 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 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru