2017-04-24 114 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

相關問題