AttributeError:“程序”对象没有属性“框架”

时间:2018-08-20 11:44:17

标签: python python-3.x

嗨,我是python的新手,无法弄清楚为什么错误'AttributeError:'Program'对象没有属性'frame'发生了。 这是代码:

from tkinter import *


class Program():

    def __init__(self, master):
        frame = Frame(master, bg='ghostwhite')
        frame.pack(fill=BOTH, expand=1)
        #menu
        self.menu = Menu(frame)
        self.frame.config(menu = self.menu)
        self.select = Menu(self.menu)
        self.menu.add_cascade(label = 'Select', menu = self.new)
        self.select.add_command(label = 'Select all', command = self.new)

     def new():
        print ('newfile')

root = Tk()
program = Program(root)
w = 800
h = 500
ws = root.winfo_screenwidth()
hs = root.winfo_screenheight()
x = (ws/2) - (w/2)
y = (hs/2) - (h/2)
root.geometry('%dx%d+%d+%d' % (w, h, x, y))
root.title('Cafe Au Lait')

root.mainloop()

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这里:

    self.frame.config(menu = self.menu)

您正在尝试访问不存在的self.frame属性-此时您所拥有的只是frame局部变量。

如果出于其他需要需要保留对frame的引用,请首先将其设为属性:

def __init__(self, master):
    self.frame = Frame(master, bg='ghostwhite')
    self.frame.pack(fill=BOTH, expand=1)
    self.menu = Menu(self.frame)
    # etc

否则,只需将self.frame.config(menu=self.menu)替换为frame.config(menu=self.menu)

相关问题