您好,我刚刚开始学习python。我有一个问题,我想修改一个名为LineGenerator.py的程序来自Mag Pi问题7。 完整代码:
http://www.themagpi.com/issue/issue-7/
该程序介绍了命令行参数。
我正在尝试添加命令行参数来更改图形的颜色。
首先我定义了颜色: ...
WH = 255,255,255
RE = 255,0,0
依旧......
然后我定义了命令行参数: ...
parser.add_argument('-c', action='store', dest='colour', type=str,
help='Choose Colour')
...
稍后在我的程序中我想画线 ...
pygame.draw.line(screen, args.colour,(nSX),(nSY),(nEX,nEY),1)
...
当我用
启动脚本时python LineGenerator.py -c WH
我收到此错误消息:
TypeError: invalid color argument
当我用“WH”直接在代码中更改“args.colour”时,它就可以了。
请帮帮我吗?
答案 0 :(得分:1)
使用字典按名称存储颜色值:
colors = { "WH": (255, 255, 255),
"RE": (255, 0, 0),
}
然后使用传递给-c
选项的字符串访问正确的颜色:
pygame.draw.line(screen, colors[args.colour], (nSX), (nSY), (nEX,nEY), 1)
答案 1 :(得分:0)
您需要将-c
作为字符串传递。用引号括起来:
parser.add_argument('-c', action='store', dest='colour', type=str,
help='Choose Colour')
否则python将传递变量-c
的值,无论它是什么。希望它有所帮助!
编辑:哦,那不是问题......哈哈哈
嗯,无论如何我都知道它到底是什么。当您将WH
作为参数传递给脚本时,您不传递变量WH
的值 - 即255, 255, 255
- 而是您'将字符串文字"WH"
作为参数传递给draw.line
。因此错误。
要解决此问题,您应指定参数nargs
,并放弃type
参数,因为后者不需要:
parser.add_argument('-c', action='store', dest='colour', nargs=3,
help='Choose Colour')
...
colours = (int(i) for i in args.colours)
pygame.draw.line(screen, *colours,(nSX),(nSY),(nEX,nEY),1)
当你运行它时:
python LineGenerator.py -c 255, 255, 255
这就是全部!希望它有所帮助!