我在python中用tkinter创建一个GUI。我试图访问一个属于同一类中其他函数的函数中的变量。获取Frame2对象没有属性self.workingarea。错误来自工具function.I正在尝试从工具function.line no:28
中的projectwindow函数访问self.workingareaclass 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)
答案 0 :(得分:1)
由于未初始化self.workingarea
,因此引发了错误。
在self.tools()
函数中对self.projectwindow()
和__init__
的交换调用。
提示-请勿在同一线程中使用2 mainloop
。而是使用TopLevel
小部件