Tkinter using 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()

与第一个函数";函数";。但是,您必须将按钮调用功能2打包到tk.Toplevel.中

一旦你的应用程序变得更大,将你的Windows/框架分组在类中从长远来看会对你有所帮助。

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()

除了@bartuda的答案外,您的直接更正代码将是

import tkinter as tk
def funcion():
global otra_ventana
otra_ventana = tk.Toplevel(root)
return_button=tk.Button(otra_ventana,text='Return',command=funcion2).pack()
root.iconify()
def funcion2():
otra_ventana.iconify()
root.deiconify() 
root = tk.Tk()
boton = tk.Button(root, text="Abrir otra ventana", command=funcion)
boton.pack()
root.mainloop()

如果你的目标是只切换窗口,你也可以尝试这种方法

import tkinter as tk
def switch(target,window):
target.iconify()
window.deiconify()
root=tk.Tk()
button=tk.Button(root,text="Abrir otra ventana",command=lambda:switch(root,otra_ventana)).pack()
otra_ventana=tk.Toplevel(root)
return_button=tk.Button(otra_ventana,text='Return',command=lambda:switch(otra_ventana,root)).pack()
otra_ventana.withdraw()
root.mainloop()

在这里,我一开始就初始化了这两个窗口,然后使用.withdraw()方法来隐藏/删除第二个窗口。使用lambda函数可以在需要时调用所需的函数和参数。函数switch()接受两个参数,前者是要图标化的窗口,后者是要指示的窗口。