0

这些天我学习了“编程python”这本书。当我运行示例时,我遇到了问题。shell向我显示了错误:

AttributeError:“NoneType”对象没有属性“pack”

但是,我从书中复制了确切的代码。我是 Python 的大一新生。我尝试自己修复它,但我失败了。所以我希望任何人都可以帮助我。

谢谢 !!!!!!

代码:</p>

#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()
4

1 回答 1

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关键字(返回,因此您收到了错误。)在 python 中定义函数内部的函数在语法上是正确的,所以它有点难以捕捉. 您必须使用关键字来定义一个类。defNoneclass

其次,在引用函数时,reply您必须self.reply在类本身中使用。

于 2013-08-25T03:05:39.773 回答