Ошибка учебника PyGTK? - PullRequest
0 голосов
/ 23 июля 2011

Я работаю с 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, в PackBox1 (string.atoi (sys.argv [1])) IndexError: список индексов из Диапазон

Что не так? Как исправить код, чтобы я мог работать с учебником>

Ответы [ 2 ]

0 голосов
/ 14 марта 2013

Чтобы запустить PackBox.py напрямую из IDLE,

ЗАМЕНА:

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()

Чтобы увидеть все три примера расположения виджетов, замените аргумент (3) аргументами (1) и (2). Нажмите на X, чтобы выйти из окна; кнопки Выйти не связаны в этом коде.

0 голосов
/ 23 июля 2011

Вам необходимо вызвать его из командной строки с помощью packbox.py 1, packbox.py 2 или packbox.py 3.

Это приведет к тому, что будет два аргумента (имя программы и первое, что вы передадите ей), поэтому вы не будете вызывать sys.exit(1), и argv[1] будет допустимым индексомдоступ.

...