手动调用__init__

时间:2015-05-22 07:03:46

标签: python class tkinter window

所以我试图在python tkinter中处理两个窗口,它们可以编辑包含某些图像路径的xml文件,问题是读取文件的函数在我的两个__init__中类窗口,所以每当我在窗口之间切换时,都会出现相同的图像。我的问题是:有没有办法重新启动类,以便__init__运行?

我认为问题在show_frame函数中,因为tkraise不运行类中的函数,只是将类中的任何内容弹出到顶部。

class xmleditApp(tk.Tk):

    def __init__(self, *args, **kwargs):

        tk.Tk.__init__(self, *args, **kwargs)
        container = tk.Frame(self)

        container.pack(side="top", fill="both", expand = True)

        container.grid_rowconfigure(0,weight=1)
        container.grid_columnconfigure(0,weight=1)

        self.frames = {}

        for F in (FirstWindow, SecondWindow):

            frame = F(container, self)

            self.frames[F] = frame

            frame.grid(row=0, column=0, sticky="nsew")

        self.show_frame(FirstWindow)

    def show_frame(self, cont):
        frame=self.frames[cont]
        frame.tkraise()

这是我想要在返回时自动更新的课程:

class FirstWindow(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self,parent)

        secondwindow=tk.Button(self,text="edit xml",command=lambda: controller.show_frame(SecondWindow))
        secondwindow.grid(row=3,column=0)

        def getimagepath():
            doc = parse('pruebasXML.xml')
            paths = doc.getroot()
            path = paths.findall('path')
            pasthlist = []
            for elem in range (0,len(path)):
                pathlist+=[[]]
                for tag in range (0,11):
                    pathlist[elem]+=[path[elem][tag].text]
            return createbutton(pasthlist)

        def createbutton(lst):
            for elem in range(0,len(lst)):
                buttonName=elem
                photo=tk.PhotoImage(file=lst[elem][0]+'.gif')
                buttonName=tk.Button(self, image=photo)
                buttonName.grid(row=2, column=elem)
                buttonName.image=photo

        if os.path.exists('pathsXML.xml')==True:
            getimagepath()

1 个答案:

答案 0 :(得分:0)

如果您有一个名为myclass的课程,则可以使用__init__手动拨打myclass.__init__(self, etc)。这里,self是自变量,etc是其他参数。