Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
9 / 6 / 5
Регистрация: 21.12.2020
Сообщений: 35

Анимация tkinter

19.08.2021, 21:39. Показов 3924. Ответов 11

Студворк — интернет-сервис помощи студентам
Вечер добрый.
Есть двигающийся кубик в ткинтере, который движется в то место, где щелкнула мышка. Никак не могу сообразить, как сделать движение плавным.

Кликните здесь для просмотра всего текста
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
import tkinter as tk
 
root = tk.Tk()
 
def move (event):
    x = event.x
    y = event.y
    
    x1_fig_coord = int(canv.coords(fig)[0])
    y1_fig_coord = int(canv.coords(fig)[1])
 
    new_x_fig_coord = x - x1_fig_coord
    new_y_fig_coord = y - y1_fig_coord
 
    canv.move(fig, new_x_fig_coord, new_y_fig_coord)
 
    print('----------')
    print('Cursor', x, y)
    print('Fig', x1_fig_coord, y1_fig_coord)
    print('Where to', new_x_fig_coord, new_y_fig_coord)
    print('----------')
    
canv = tk.Canvas(height = 500, width = 500)
canv.pack()
 
fig = canv.create_rectangle(100, 100, 150, 150)
 
root.bind('<Button-1>', move)
 
root.mainloop()


И еще есть вопросик по самому ткинтеру. На кой ляд там mainloop??
Прочитал много где, что это "неотъемлемая часть программы и без него ничего работать не будет..."
А какова практическая польза? Так как что пишешь его в конце, что нет - итог один - все работает
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.08.2021, 21:39
Ответы с готовыми решениями:

Tkinter и анимация
Привет народ, начал немного изучать tkinter, создавать canvas, кнопки, линии на холсте и всё подобное уже более-менее научился, затронул...

Анимация в python tkinter
Подскажите как сделать с помощью python tkinter чтобы двигался отдельно ползунок Scale

Анимация в tkinter (Рамки)
необходимо сделать рамки в игре, чтобы рыцарь не улетал за наше окно. from tkinter import * import random window = Tk() w=600 ...

11
Заблокирован
20.08.2021, 10:37
Цитата Сообщение от Nick_Gossman Посмотреть сообщение
сделать движение плавным
видимо Брезенхем в помощь, или проще y=ax+b
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
20.08.2021, 15:37
Цитата Сообщение от Nick_Gossman Посмотреть сообщение
На кой ляд там mainloop
Когда запускается программа, которая использует tkinter, что бы создать форму, созданная форма сразу не работает (например кнопки не работают), так как управление находится у основной программы. Что бы заработала форма (начала реагировать на мышку и клавиатуру), нужно передать управление от основного кода непосредственно форме (активировать ее). Именно это и делает mainloop, который используют сразу после создания формы.
0
9 / 6 / 5
Регистрация: 21.12.2020
Сообщений: 35
20.08.2021, 15:40  [ТС]
То есть мэйнлуп имеет смысл, если в коде, помимо ткинтера, есть ещё что-то, что перетягивает фокус на себя?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
20.08.2021, 16:00
Nick_Gossman, Я с Canvas не работал. Может быть он сам передает управления форме и без mainloop? Тут я ничего сказать не могу. Выясняйте.

Добавлено через 4 минуты
Nick_Gossman, Обычно после создания формы в коде могут быть еще команды, которые предполагается запускать после выхода из формы. Но если Вы не напишите после создания формы mainloop, то программа будет выполнять эти команды, не перейдя к форме. То есть Вы не сможете предусмотреть команды для выполнения после работы с формой.

Добавлено через 5 минут
Nick_Gossman, Из того, что Вы говорили, видимо форма может активироваться после выполнения всего кода и без mainloop. Может это и так, я не проверял. Но лучше все таки явно передавать управление форме с помощью mainloop.

Добавлено через 6 минут
Nick_Gossman, Обычно создание формы оформляется в виде функции. И логично при вызове функции создания формы сразу же и передавать упраление форме, чем разносить создание формы и передачу ей управления в разные места, включая ожидания когда отработает весь код основного сценария.
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.08.2021, 20:05
Цитата Сообщение от Nick_Gossman Посмотреть сообщение
что пишешь его в конце, что нет - итог один - все работает
Шта?
0
9 / 6 / 5
Регистрация: 21.12.2020
Сообщений: 35
20.08.2021, 20:08  [ТС]
iSmokeJC, Шта шта? Ну вот взять мой код в шапке, он запускается и выполняется как с mainloop так и без него
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.08.2021, 20:14
Nick_Gossman,
Не верю! (С) Станиславский
Кликните здесь для просмотра всего текста
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.08.2021, 20:17
Nick_Gossman, ты запусти свой код просто так, а не в IDLE например
0
9 / 6 / 5
Регистрация: 21.12.2020
Сообщений: 35
20.08.2021, 20:33  [ТС]
iSmokeJC, Чтоб мне пусто было
Кликните здесь для просмотра всего текста
Название: Без названия.jpg
Просмотров: 63

Размер: 4.5 Кб


На а по факту, в идле создаю новый модуль через ctrl-n, там пишу код и жмакаю F5
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.08.2021, 20:38
Nick_Gossman, так то в IDLE !!!
Она походу автоматом держит код в основном цикле.

Смысл мэйнлупа - прога крутится в бесконечном цикле и ожидает каких-то событий, которые она отлавливает и обрабатывает. Клики мыши, ввод текста, таймеры и т.д. Если мэйнлупа не будет, тебе отрисуется гуй (да и то не факт) и тут же исчезнет, т.к. программа завершит работу.
1
9 / 6 / 5
Регистрация: 21.12.2020
Сообщений: 35
20.08.2021, 20:51  [ТС]
iSmokeJC, Таки да, снес mainloop, открыл через консоль, даже интерфейса не было. Пасиба за разъяснения!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.08.2021, 20:51
Помогаю со студенческими работами здесь

Как сделать так, чтобы при использовании модуля из tkinter не открывалось окно tkinter?
Как сделать так, чтобы при использовании модуля из tkinter не открывалось окно tkinter? Я пишу приложение на kivy но использую ...

Виджеты tkinter и tkinter.ttk (используется Python 3.5.2)
1) Проблема с виджетом Scale (ползунок) модуля tkinter. Я создал ползунок от 1 до 50 (как на первой картинке). По умолчанию стоит на 1....

tkinter
Используя справочную литературу, изучить модуль tkinter. Реализовать класс из предыдущего задания, используя оконный интерфейс и кнопки. ...

Tkinter
Есть функция def button_clicked(event): weight = entry1.get() height = entry2.get() intweight = int(weight) ...

Tkinter
Помогите пожалуйста, должно выйти окно, но я не могу понять что писать в modele.


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru