颜色不变的python图形

2024-09-19 21:02:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着复制这样的效果

enter image description here

import graphics
from graphics import color_rgb
import random
window= graphics.GraphWin("x", 600, 400)
stripes = input("How many stripes should be on the flag")
stripes = int(stripes)
count = 0
count = int(count)
P1=graphics.Point(0,0) #left corner - anchor point
for x in range(stripes): #loop for number of stripes
    col= random.randint(1,255)
    stepdim = 400/stripes #size of divisions
    stepdim = int(stepdim)
    shrink = count*stepdim
    shrink = int(shrink)
    stepdim = stepdim*10 #enlarge to an increment below the last
    stepdim = stepdim-shrink
    stepdim = int(stepdim)
    P2=graphics.Point(600,stepdim) #bottom right corner - ever shrinking
    outsiderec=graphics.Rectangle(P1,P2) #
    outsiderec.setFill(color_rgb(100, col, 0))
    outsiderec.draw(window)
    count= count + 1
    count= int(count)
window.getMouse()
window.close()

我收到的是一个平面颜色。 enter image description here 我假设问题在我的rand(int)中。我真的不知道事情的来龙去脉。它不是不止运行一次吗


Tags: theimportcountrandomrgbwindowcolorint
1条回答
网友
1楼 · 发布于 2024-09-19 21:02:35

以您的代码为基础,我试图重现预期的结果

import graphics
from graphics import color_rgb
import random

window= graphics.GraphWin("x", 600, 400)
stripes = input("How many stripes should be on the flag")
stripes = int(stripes)
#count = 0
#count = int(count)
#P1=graphics.Point(0,0) #left corner - anchor point
stepdim = 400/stripes #size of divisions
for x in range(stripes): #loop for number of stripes
    #col= random.randint(1,255)
    #stepdim = int(stepdim)
    #shrink = count*stepdim
    #shrink = int(shrink)
    #stepdim = stepdim*10 #enlarge to an increment below the last
    #stepdim = stepdim-shrink
    #stepdim = int(stepdim)
    #P2=graphics.Point(600,stepdim) #bottom right corner - ever shrinking
    P1=graphics.Point(0, stepdim * x) #left corner - anchor point
    P2=graphics.Point(600,stepdim * (x + 1)) #bottom right corner - ever shrinking
    outsiderec=graphics.Rectangle(P1,P2)
    #outsiderec.setFill(color_rgb(100, col, 0))
    red = random.randint(1, 255)
    green = random.randint(1, 255)
    blue = random.randint(1, 255)
    outsiderec.setFill(color_rgb(red, green, blue))
    outsiderec.draw(window)
    #count= count + 1
    #count= int(count)
window.getMouse()
window.close()

我有:

  • 注释掉了所有不需要的语句
  • stepdim = 400/stripes从循环内部移到外部,因为不需要为每个循环计算相同的值
  • P1=graphics.Point(0,0)移动到循环中,稍微修改一下,只指向条带的左上角
  • 修改P2=graphics.Point(600,stepdim)以指向条带的右下角
  • 添加了三种颜色分量的随机计算red = random.randint(1, 255)green = random.randint(1, 255)blue = random.randint(1, 255)

观察结果:

我把条纹的画法改了一点。不是为每个循环绘制缩小的版本,修改的版本只是在连续位置绘制固定大小的条带

相关问题 更多 >