在Python中每隔17ms在屏幕上绘制一个点?

时间:2014-03-01 14:19:36

标签: python

我设法将一个脚本串起来,该脚本接收来自iOS应用设置速度和方向的命令。

问题是我没有实际的设备,所以我的应用程序将命令发送到我使用龙卷风构建的一个小python Web套接字服务器...

基本上我理想需要的是一种方法:

显示一个窗口 每隔17ms,清除窗口,用x和y读取一个全局变量,并在x和y处绘制一个点或圆。

有没有一种方便的方法可以让我直观地看到发生了什么?

如果我可以每隔X毫秒在窗口中绘制一个圆圈,我就可以处理其余部分。

需要添加什么:

-create a window
-create a timer
on timer callback: clear screen and draw a circle in the window.

3 个答案:

答案 0 :(得分:5)

你应该尝试使用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。这真的很有帮助。

答案 1 :(得分:0)

答案 2 :(得分:0)

您可以将终端用作“窗口”并在其中绘制“圆圈”。作为一个非常简单(且不可靠)的“计时器”,可以使用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。