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

Tkinter技术问题:如何让程序重启时窗口在关闭位置打开?

让Tkinter窗口重启后保持关闭时的位置

这问题我之前做桌面小工具的时候也碰到过,核心思路就是把窗口的位置和尺寸信息持久化存储起来,程序启动时再读取这些信息恢复窗口状态就行。下面给你一个完整的可运行方案:

实现步骤

  1. 程序启动时读取本地配置文件,加载上次保存的窗口位置
  2. 窗口关闭/重启前,将当前窗口的位置信息写入配置文件
  3. 重启程序时,新进程读取配置文件恢复窗口状态

完整代码示例

import tkinter as tk
import json
import os
import sys

def load_window_config():
    # 配置文件路径,放在程序运行目录下
    config_path = os.path.join(os.path.dirname(__file__), "window_config.json")
    if os.path.exists(config_path):
        with open(config_path, "r", encoding="utf-8") as f:
            config_data = json.load(f)
            # 返回保存的geometry,默认800x600
            return config_data.get("geometry", "800x600")
    # 没有配置文件时返回默认尺寸
    return "800x600"

def save_window_config(geometry):
    config_path = os.path.join(os.path.dirname(__file__), "window_config.json")
    with open(config_path, "w", encoding="utf-8") as f:
        json.dump({"geometry": geometry}, f)

def restart_app():
    # 重启前先保存当前窗口位置
    save_window_config(root.geometry())
    # 执行重启命令
    python_exec = sys.executable
    os.execl(python_exec, python_exec, *sys.argv)

def on_closing():
    # 关闭窗口前保存位置
    save_window_config(root.geometry())
    root.destroy()

# 主程序初始化
root = tk.Tk()
root.title("记住窗口位置Demo")

# 加载配置并设置窗口位置
initial_geometry = load_window_config()
root.geometry(initial_geometry)

# 绑定窗口关闭事件
root.protocol("WM_DELETE_WINDOW", on_closing)

# 添加重启按钮(模拟你的重启场景)
restart_btn = tk.Button(root, text="重启程序", command=restart_app, padx=10, pady=5)
restart_btn.pack(pady=30)

root.mainloop()

代码说明

  • load_window_config:启动时检查配置文件是否存在,存在则读取上次保存的窗口geometry(格式为宽度x高度+X偏移+Y偏移,比如800x600+150+100),不存在则使用默认尺寸。
  • save_window_config:将当前窗口的位置信息写入JSON格式的配置文件,确保信息能持久化到本地。
  • 窗口关闭事件绑定:通过root.protocol("WM_DELETE_WINDOW", on_closing),在用户点击窗口关闭按钮时自动保存位置,避免正常关闭时丢失信息。
  • 重启逻辑:在执行os.execl重启前,先调用保存函数记录当前窗口位置,新启动的程序会读取配置文件恢复状态。

这样不管是正常关闭后重新打开,还是通过os.execl重启,窗口都会回到上次关闭时的位置和尺寸啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:25:44