PyGTK教程错误?

时间:2011-07-23 18:48:49

标签: python pygtk

我正在使用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:列出索引   范围

有什么问题?如何修复代码,以便我可以使用教程>

2 个答案:

答案 0 :(得分:0)

您需要使用packbox.py 1packbox.py 2packbox.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退出窗口;此代码中未连接退出按钮。