You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用面向对象的Tkinter代码实现多窗口的图标化与还原?

面向对象Tkinter多窗口返回还原父窗口解决方案

核心问题

当前racedetailsWindow类没有持有父窗口(enterWindow)的引用,导致关闭子窗口时无法还原被最小化的父窗口。只需将父窗口实例传递给子窗口,就能在关闭逻辑中调用父窗口的还原方法。

修改后的代码

1. 打开窗口的代码调整

def openselect(self):
    self.selectedRace = self.viewBox.get()
    self.newwindow = Toplevel(self.master)
    # 新增传递父窗口实例给子窗口
    racedetailsWindow(self.newwindow, self.selectedRace, self.master)
    self.master.iconify()

class racedetailsWindow():
    # 新增parent参数接收父窗口实例
    def __init__(self, master, selectedRace, parent):
        self.master = master
        self.parent = parent  # 保存父窗口引用
        self.master.title("Race Details")
        self.master.geometry("650x400")
        self.master.config(bg="white")

2. 返回按钮及close方法调整

# buttons: back button and enter button
self.back = Button(self.master, text ="Back", command = self.close, width=10, fg="red").place(x=500,y=350)
self.enter = Button(self.master, text="ENTER!", font=(15), command=self.gotoenter, width=15, fg="red").place(x=10,y=350)

def close(self):
    self.master.destroy()  # 销毁当前子窗口
    self.parent.deiconify()  # 还原被图标化的父窗口

说明

  • 创建子窗口实例时,将父窗口对象(self.master即enterWindow)作为参数传入,在子窗口类中保存为self.parent。
  • 关闭子窗口时,先销毁当前窗口,再调用父窗口的deiconify()方法,即可完成父窗口的还原。

内容的提问来源于stack exchange,提问作者dexta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:53:21