首页 > 解决方案 > Tkinter 使用 python

问题描述

如果我在 tkinter 中有一个主窗口,那么我单击一个按钮并打开另一个窗口(辅助窗口)并最小化第一个窗口,然后我决定单击第二个窗口上的一个按钮以返回第一个窗口(例如“返回按钮”)如何通过按 tkinter 中第二个窗口上的按钮来执行返回第一个窗口的选项?谢谢!

import tkinter as tk

def funcion():
    otra_ventana = tk.Toplevel(root)
    root.iconify()

def funcion2():
    vuelta_ventana.iconify()
    root.deiconify() 

root = tk.Tk()
boton = tk.Button(root, text="Abrir otra ventana", command=funcion)
boton2 = tk.Button(root, text="return", command=funcion2)
boton.pack()
root.mainloop()

标签: tkinter

解决方案


它几乎相同,就像您对第一个函数“funcion”所做的那样。但是,您必须在 tk.Toplevel 中打包调用 funcion2 的按钮。

从长远来看,一旦您的应用程序变大,将您的 Windows / Frames 分组到类中将对您有所帮助。

import tkinter as tk

def main():
    app = App()
    app.mainloop()

class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.geometry("300x300")
        self.popup = None

        self.buton = tk.Button(
            self,
            text="Abrir otra ventana",
            command=self.funcion
        )
        self.buton.pack()


    def funcion(self):
        self.iconify()
        if self.popup is None:
            self.popup = MyToplevel(self)
        else:
            self.popup.deiconify()


class MyToplevel(tk.Toplevel):
    def __init__(self, master):
        super().__init__()
        self.master = master

        self.buton = tk.Button(
            self,
            text="Return",
            command=self.funcion2
        )
        self.buton.pack()

    def funcion2(self):
        print("hello")
        self.master.deiconify()
        #self.destroy()#maybe more useful? 
        self.iconify()


if __name__ == '__main__':
    main()

推荐阅读