在空白窗口上画点

时间:2017-11-16 02:59:16

标签: python

我是一名艺术家。我安装了Python。有用。我想要做的是基于重复算法在白色屏幕(窗口)上创建图像。我似乎无法在窗户上点上任何东西。如果我可以得到一些python代码,以及包含该代码的库,基于x,y坐标,可以在该窗口中绘制一个点,我几乎可以弄清楚其余部分。也可以改变点的颜色。 所以流量控制看起来像:

  1. 计算x,y坐标(我的公式会这样做)
  2. 指定点颜色(可能始终为相同颜色)
  3. 在指定坐标处绘制点。
  4. 将上面1中的x y个答案泵回到等式中并计算新的x,y坐标。
  5. 在指定次数上循环到2。
  6. 我几乎可以把这一切都搞清楚,但是“画出彩色圆点”超出了我的范围。

2 个答案:

答案 0 :(得分:1)

我相信Python附带的turtle库中的dot()方法是最简单的解决方案:

from random import randint, choice
from turtle import Turtle, Screen

COLORS = ['red', 'green', 'blue', 'magenta', 'yellow', 'cyan']

screen = Screen()

width, height = screen.window_width(), screen.window_height()

turtle = Turtle(visible=False)
turtle.speed('fastest')
turtle.penup()

for _ in range(randint(10, 100)):
    radius = randint(5, 45)

    x = randint(radius - width//2, width//2 - radius)
    y = randint(radius - height//2, height//2 - radius)

    turtle.setposition(x, y)
    turtle.dot(radius * 2, choice(COLORS))

screen.exitonclick()

enter image description here

Turtle还有一个circle()方法,但它从圆的边缘(基于半径而不是直径)绘制而不是像dot()方法那样的中心。 circle()的一个优点是轮廓和填充可以是不同的颜色,与dot()不同。

答案 1 :(得分:0)

您可以安装Pygame模块吗?来自命令行的pip install pygame之类的东西可能适合您。如果这对您不起作用,请按照上面turtle的建议查看Vijay,它包含在您的python安装中。

以下是一个使用Pygame的示例,该窗口在一个适合您修改的窗口上绘制随机圆圈:

import pygame
import random

def get_random_position():
    """return a random (x,y) position in the screen"""
    return (random.randint(0, screen_width - 1),  #randint includes both endpoints.
            random.randint(0, screen_height - 1)) 

def get_random_named_color():
    """return one of the builtin colors"""
    return random.choice(all_colors)

all_colors = list(pygame.colordict.THECOLORS.items())  
# convert color dictionar to a list for random selection once

if __name__ == "__main__":
    pygame.init()
    screen_width,screen_height = 640, 480
    surface = pygame.display.set_mode((screen_width,screen_height))
    pygame.display.set_caption('Random Circles')
    clock = pygame.time.Clock() #for limiting FPS
    FPS = 10
    exit_demo = False
    # start with a white background
    surface.fill(pygame.Color("white"))
    while not exit_demo:
        for event in pygame.event.get():            
            if event.type == pygame.QUIT:
                exit_demo = True
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    # fill the screen with white, erasing everything
                    surface.fill(pygame.Color("white"))
                # Up/Down arrows to change FPS limit
                elif event.key == pygame.K_UP:
                    FPS *= 2
                elif  event.key == pygame.K_DOWN:
                    FPS /= 2
        # calculate the properties of a circle
        name, random_color = get_random_named_color()
        pos = get_random_position()
        circle_size = random.randint(1,10)
        pygame.draw.circle(surface, random_color, pos, circle_size)
        #print("{} at {}".format(name, pos))
        pygame.display.update()
        clock.tick(FPS)
    pygame.quit()
    quit()

按退出键清除屏幕,然后使用向上和向下箭头更改速度。按标题栏上的X关闭窗口。