Нарисовать точку на экране каждые 17 мс в Python?
Мне удалось собрать вместе script, который получает команды от скорости установки приложения iOS и направления.
Дело в том, что у меня нет фактического устройства, поэтому мое приложение вместо этого отправляет команды на маленький сервер веб-сокетов python, который я построил, который использует торнадо...
По сути, я в идеале нуждаюсь в следующем:
Показать окно
Каждые 17 мс, очистите окно, прочитайте глобальную переменную с x и y и нарисуйте точку или круг в x и y.
Есть ли удобный способ сделать это, чтобы я мог визуально видеть, что происходит?
Если я могу получить что-то, чтобы нарисовать круг в окне каждые X ms, я могу справиться с остальными.
Что нужно добавить:
-create a window
-create a timer
on timer callback: clear screen and draw a circle in the window.
Ответы
Ответ 1
Вы должны попробовать использовать pygame для работы с графикой.
Первая загрузка pygame
Вот пример кода
import pygame,sys
from pygame import *
WIDTH = 480
HEIGHT = 480
WHITE = (255,255,255) #RGB
BLACK = (0,0,0) #RGB
pygame.init()
screen = display.set_mode((WIDTH,HEIGHT),0,32)
display.set_caption("Name of Application")
screen.fill(WHITE)
timer = pygame.time.Clock()
pos_on_screen, radius = (50, 50), 20
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
timer.tick(60) #60 times per second you can do the math for 17 ms
draw.circle(screen, BLACK, pos_on_screen, radius)
display.update()
НАДЕЖДА, ЧТО ПОМОГАЕТ. Помните, что вам нужно сначала загрузить pygame.
Вы также должны прочитать на pygame. Это действительно полезно.
Ответ 2
1. Создать окно
2. Задайте задание экземпляра таймера и повторения
3. Нарисуйте круг
Ответ 3
Вы можете использовать свой терминал как "окно" и нарисовать "круг" в нем. В качестве очень простого (и ненадежного) "таймера" можно использовать функцию time.sleep()
:
#!/usr/bin/env python
"""Print red circle walking randomly in the terminal."""
import random
import time
from blessings import Terminal # $ pip install blessings colorama
import colorama; colorama.init() # for Windows support (not tested)
directions = [(-1, -1), (-1, 0), (-1, 1),
( 0, -1), ( 0, 1),
( 1, -1), ( 1, 0), ( 1, 1)]
t = Terminal()
with t.fullscreen(), t.hidden_cursor():
cur_y, cur_x = t.height // 2, t.width // 2 # center of the screen
nsteps = min(cur_y, cur_x)**2 # average distance for random walker: sqrt(N)
for _ in range(nsteps):
y, x = random.choice(directions)
cur_y += y; cur_x += x # update current coordinates
print(t.move(cur_y, cur_x) +
t.bold_red(u'\N{BLACK CIRCLE}')) # draw circle
time.sleep(6 * 0.017) # it may sleep both less and more time
print(t.clear) # clear screen
Чтобы попробовать, сохраните код в random-walker.py
и запустите его:
$ python random-walker.py
Я не знаю, работает ли он в Windows.