2017-04-24 118 views
0

我有一个类master.py与Glade有关的Gui。我有一个带有事件的按钮。 所有我想要的是从另一个类另一个python文件中调用另外两个方法,但NameError:全局名称'Airmong'未定义 错误被抛出。NameError:没有定义全局名'classObject'PYTHON

这些文件位于相同的文件夹! master.py文件包含:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
from gi.repository import Gtk 
from airmong import Airmong 
class Handler: 
    airmonObj=Airmong(); 
    def airmon_clicked(self, button): 
     airmonObj.startAirmong() 
builder = Gtk.Builder() 
builder.add_from_file("master.glade") 
builder.connect_signals(Handler()) 

window = builder.get_object("window1") 
window.connect("delete-event", Gtk.main_quit) 
window.show_all() 
Gtk.main() 

airmong.py文件包含:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
class Airmong: 
    def __init__(self): 
     pass 
    def stopAirmong(self): 
      result = subprocess.check_call(['airmon-ng','stop' ,'wlan0mon']) 
      if result == 0: 
        print "Success stopping airmong" 
      else: 
        print "CAN'T stop airmong" 


    def startAirmong(self): 
     result=subprocess.check_call(['airmon-ng','start','wlan0']) 
     if result == 0: 
        print "Success starting airmong" 
     else: 
        print "CAN'T start airmong" 

我在做什么错误非常感谢

错误:

Traceback (most recent call last): 
File "./master.py", line 9, in airmon_clicked 
airmonObj.startAirmong(); 
NameError: global name 'airmonObj' is not defined 
+0

?试试'airmong'。 –

+0

同样的错误,对不起 – TrulyXax

+0

是你的文件是'airmong.py'还是'Airmong.py'?尝试'从Airmong进口Airmong' –

回答

0

代码中出现多处错误:

Master.py

1)Line4在功能line8缩进身体变化内容from airmong.py import Airmongfrom airmong import Airmong

2)。示例代码的功能可能如下。

class Handler: 
    airmonObj=Airmong(); 

    def airmon_clicked(self, button): 
     airmonObj.startAirmong() 

airmong.py

3)line3

前4 class关键字删除空间)为您初始化功能补充身体。示例可以如下。请在class之前关注关键词

class Airmong: 
    def __init__(self): 
     pass 

一步一步修复所有语法错误。 `airmong.py`的

+0

检查编辑的帖子。我修正了所有的错误(没有第3点...在实际的代码中class关键字之前没有空格)。同样的结果 – TrulyXax

+0

我修正了Airmong未定义的问题...现在与airmongObj的错误没有定义提出.... – TrulyXax

+0

是的。这是你需要修复的另一点。'airmonObj.startAirmong()'用'self.airmonObj.startAirmong()'代替它。尝试通过[python文档](https://docs.python.org/2/contents.html) – Haranadh

相关问题