我正在使用Python 2.7和PyGTK 2.24。我正在使用以下教程。请阅读代码上下文。
http://www.pygtk.org/pygtk2tutorial/sec-PackingDemonstrationProgram.html
下面的代码块(下面重印)在我输入(verbatum)时抛出以下错误:
if __name__ =="__main__":
if len(sys.argv) != 2:
sys.stderr.write("usage: packbox.py num, where num is 1, 2, or 3.\n")
sys.exit(1)
PackBox1(string.atoi(sys.argv[1]))
main()
用法:packbox.py num,其中num为1,2或3。
Traceback(最近一次调用最后一次):文件“C:/GTKTutorial/packbox.py”, 161号线,在 sys.exit(1)SystemExit:1
此外,如果我将代码更改为以下代码以克服第一个错误,我会收到下一条错误消息:
if __name__ =="__main__":
if len(sys.argv) != 1:
sys.stderr.write("usage: packbox.py num, where num is 1, 2, or 3.\n")
sys.exit(1)
PackBox1(string.atoi(sys.argv[1]))
main()
Traceback(最近一次调用最后一次):文件“C:/GTKTutorial/packbox.py”, 第162行,in PackBox1(string.atoi(sys.argv [1]))IndexError:列出索引 范围
有什么问题?如何修复代码,以便我可以使用教程>
答案 0 :(得分:0)
您需要使用packbox.py 1
,packbox.py 2
或packbox.py 3
从命令行调用它。
这将导致有两个参数(程序的名称和传递给它的第一件事),因此您不会触发sys.exit(1)
,argv[1]
将是有效的索引访问。
答案 1 :(得分:0)
直接从IDLE运行PackBox.py,
REPLACE:
if __name__ =="__main__":
if len(sys.argv) != 2:
sys.stderr.write("usage: packbox.py num, where num is 1, 2, or 3.\n")
sys.exit(1)
PackBox1(string.atoi(sys.argv[1]))
main()
使用:
if __name__ == "__main__":
packbox = PackBox1(3)
main()
要查看所有三个示例窗口小部件排列,请使用参数(1)&替换参数(3)。 (2)。点击X退出窗口;此代码中未连接退出按钮。