无法访问属于同一类其他函数的函数中的变量

时间:2019-10-30 10:56:11

标签: python tkinter

我在python中用tkinter创建一个GUI。我试图访问一个属于同一类中其他函数的函数中的变量。获取Frame2对象没有属性self.workingarea。错误来自工具function.I正在尝试从工具function.line no:28

中的projectwindow函数访问self.workingarea
class Frame2:
    def __init__(self,root):
        self.list=["label","Button","Entry","Text","Frame","RadioButton","Checkbutton","Canvas","LabelFrame","Notebook","ScaleWidget"]
        self.w2=root
        self.w2.state('zoomed')
        self.w2.title("IDE")
        self.w2.configure(background="white")
        self.tools()
        self.projectwindow()
        #=============
    def projectwindow(self):
        self.workingarea=Tk()
        self.workingarea.geometry('930x660+5+25')
        self.workingarea.mainloop()
        #================
    def tools(self):
        self.prop=ttk.Notebook(self.w2,width=self.w2.winfo_screenwidth()-int(self.w2.winfo_screenwidth()*0.7),height=self.w2.winfo_screenheight())
        self.prop.place(x=self.w2.winfo_screenwidth()-int(self.w2.winfo_screenwidth()*0.3),y=0)
        self.widgets=Frame(self.prop,bg="white")
        self.root_properties=Frame(self.prop,bg="white")
        self.properties=Frame(self.prop)
        self.prop.add(self.widgets,text='Widgets',compound=TOP)
        self.prop.add(self.root_properties,text='Root Window Properties',compound=TOP)
        self.prop.add(self.properties,text='Properties',compound=TOP)
        #=========
        self.widget_section=LabelFrame(self.widgets,text='TK Widgets',padx=5,pady=15,bg='white')
        self.widget_section.place(x=10,y=10)
        self.obj=labels(self.workingarea,self.properties)
        for self.i in range(11):
            self.btn_widgets=Button(self.widget_section,text=self.list[self.i], borderwidth=2, relief="groove",width=33,font=("",14,""),command=self.obj.label)
            self.btn_widgets.grid(row=self.i,column=0,pady=2)

1 个答案:

答案 0 :(得分:1)

由于未初始化self.workingarea,因此引发了错误。

self.tools()函数中对self.projectwindow()__init__的交换调用。

提示-请勿在同一线程中使用2 mainloop。而是使用TopLevel小部件