NameError: глобальное имя 'gtk' не определено - PullRequest
1 голос
/ 06 декабря 2011

Я заметил, что «gtk» не определен, и я не мог понять, что это значит, несмотря на то, что мне удалось импортировать PYGTK при его запуске.Ниже приведен код:

import sys

importStatus = False

try:
    from gtk import *
    importStatus = True

except ImportError:
    print "PyGTK module does not exist. Can't launch GUI !"
    print "Please download and install GTK and PyGTK."
    importStatus = False

if importStatus:

    class gtkGUI():

        def __init__(self):
            print "gtkGUI imported"

        def startGUI(self):
            print "GUI Started"
            self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
            return None

Ниже приведена ошибка:

Traceback (most recent call last):
  File "mainGUI.py", line 14, in <module>
    gtk.startGUI()
  File "..../gtkGUI.py", line 25, in startGUI
    gtk.main()
NameError: global name 'gtk' is not defined

Как мне решить эту ошибку?Спасибо.

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

gtk не определено, потому что вы никогда не импортируете его как модуль.Вы используете from gtk import *, который перетягивает все члены модуля gtk в текущее пространство имен, а не импортирует модуль в целом.Итак, в строке 25 вам нужно будет позвонить Window(WINDOW_TOPLEVEL), а не gtk.Window(gtk.WINDOW_TOPLEVEL).

Я бы рекомендовал использовать import gtk вместо from gtk import *.

3 голосов
/ 06 декабря 2011

Вам необходим GTK, установленный в системе с PyGTK.Обычно ваш импорт для PyGTK выглядит примерно так:

import pygtk
pygtk.require('2.0')
import gtk

Если вы посмотрите на загрузки PyGTK , вы увидите ссылку на установку GTK +.Убедитесь, что вы делаете это (я думаю, что вы должны сделать это до установки PyGTK, чтобы быть полностью правильным).

...