这些天我学习了“编程python”这本书。当我运行这些例子时,我遇到了问题。shell向我显示了错误:
AttributeError:'NoneType'对象没有属性'pack'
但是,我从书中复制了确切的代码。我是Python的新手。我试着自己解决它,但我失败了。所以我希望有人能帮助我。
谢谢!!!!!!
CODE:
#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
。