2017-04-24 33 views
1

我得到了一个python脚本的问题。 我们想做光绘画,除了剧本之外,它们都是有效的。 总是有这个错误。这是代码中的最后一行。没有这条线没有任何反应。这里的错误:IndexError:列表索引超出范围showPicture(sys.argv [1],strip)

File "showImage.py", line 49, in <module> showPicture(sys.argv[1], strip) IndexError: list index out of range

下面的代码:

import time 
from neopixel import * 
from PIL import Image 
import sys 

# see also https://learn.adafruit.com/neopixels-on-raspberry-pi/overview 

# LED strip configuration: 
LED_COUNT = 50  # Number of LED pix. 
LED_PIN  = 18  # GPIO pin connected to the pix (must support PWM!). 
LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz) 
LED_DMA  = 5  # DMA channel to use for generating signal (try 5) 
LED_INVERT = False # True to invert the signal (when using NPN transistor 
level shift) 

# method to blank all LEDs 
def blankLine(): 
for x in range(LED_COUNT): 
strip.setPixelColorRGB(x, 0,0,0) 
strip.show() 

# method to resize picture and show in column per column on the led strip 
def showPicture(filename, strip): 
blankLine() 
# open file 
img = Image.open(filename).convert("RGB") 

# resize file 
newWidth = float(img.size[0])/float(img.size[1])*LED_COUNT 
img = img.resize((int(newWidth), LED_COUNT)) 

width = img.size[0] 
height = img.size[1] 

pix = img.load() 

for x in range(width): 
for y in range(height): 
    strip.setPixelColorRGB(y, pix[x,y][0], pix[x,y][1], pix[x,y][2]) 
strip.show() 
time.sleep(0.3) 

blankLine() 

# main function - start of the program - you have to provide an image name 
as an argument 
# Create NeoPixel object with appropriate configuration. 
strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, 
LED_INVERT) 
# Intialize the library (must be called once before other functions). 
strip.begin() 
showPicture(sys.argv[1], strip) 

我不知道什么是错?已解决

新问题:LED显示错误的颜色。但奇怪的是,这只是在这个脚本。如果使用其他脚本,它会显示正确的颜色。例如,当它显示紫色时,它是蓝色的。

+0

请显示正确缩进的Python代码。所有左对齐都是不可读的。 – lit

+0

新问题=新问题... – Trolldejo

回答

1

正如我现在还不能现在,我书面方式这个答案评论:

sys.argv中[1]指的是你打电话时,它给你的脚本文件名。 你如何运行脚本?

通过运行它想: python my_script.py my_file_name 你不应该得到这个错误没有更多的

当我看到在你的代码中,规定你应该给的文件名作为参数,所以你可能已经这样做。 。?

+0

当我回答您提问的问题时,我希望您将我的答案标记为已接受。 对于新的问题,你应该打开一个新的线程。 – Trolldejo

相关问题