2013-08-25 298 views
0

我學到的書「規劃蟒」。這些天當我運行的例子中,我遇到的問題的殼給我的錯誤:有一個對象沒有屬性

AttributeError的:‘NoneType’對象有沒有屬性'pack'

但是,我複製了這本書的完整代碼,我是一個Python大一新生,我試着自己修復它,但是我失敗了,所以我希望任何人都可以幫助我

謝謝!!!!!!

編號:

#File test.py 
from tkinter import * 
from tkinter.messagebox import showinfo 

def MyGui(Frame): 
    def __init__(self, parent = None): 
     Frame.__init__(self, parent) 
     button = Button(self, text='press', command=reply) 
     button.pack() 
    def reply(self): 
     showinfo(title = 'popup',message ='Button pressed!') 

if __name__ == '__main__': 
    window = MyGui() 
    window.pack() 
    window.mainloop() 

    #File test2.py 
from tkinter import * 
from test import MyGui 

mainwin = Tk() 
Label(mainwin,text = __name__).pack() 

popup = Toplevel() 
Label(popup,text = 'Attach').pack(side = LEFT) 
MyGui(popup).pack(side=RIGHT) 
mainwin.mainloop() 
+0

你可以顯示錯誤的完整回溯,而不僅僅是最後一行嗎? –

回答

2

您可以用下面的代碼解決這個問題:

#File test.py 
from tkinter import * 
from tkinter.messagebox import showinfo 

class MyGui(Frame): 
    def __init__(self, parent = None): 
     Frame.__init__(self, parent) 
     button = Button(self, text='press', command=self.reply) 
     button.pack() 
    def reply(self): 
     showinfo(title = 'popup',message ='Button pressed!') 

if __name__ == '__main__': 
    window = MyGui() 
    window.pack() 
    window.mainloop() 

基本上兩個小的語法錯誤。首先,您嘗試創建一類MyGui,但您使用的是關鍵字def,該函數取而代之(返回None,因此收到錯誤)。在Python中,它在語法上正確地定義了函數內部的函數,因此它有點兒很難趕上。您必須使用關鍵字class來定義一個類。

其次當引用函數reply時,您必須在類本身內使用self.reply