Tkinter调用askopenfilename弹出的文件选择窗口如何前置置顶显示
问题原因
你创建的Tk根窗口未设置顶层属性、也未获取焦点,和其绑定的文件选择对话框会继承根窗口的层级,所以出现被其他窗口遮挡的问题。
修复后代码
from tkinter import Tk from tkinter.filedialog import askopenfilename import pandas as pd # 初始化根窗口 root = Tk() # 设置根窗口为顶层显示 root.attributes('-topmost', True) # 强制根窗口获取焦点,确保对话框继承焦点 root.focus_force() # 隐藏根窗口 root.withdraw() # 弹出文件选择窗口,此时会前置显示 file_path = askopenfilename() df = pd.read_excel(file_path) # 操作完成后销毁根窗口,避免后台残留无意义窗口进程 root.destroy()
额外注意事项
- 不要重复创建多个Tk实例,多实例会大概率出现窗口层级、焦点异常问题
- 如果是macOS系统,偶发还是会出现后置的情况,可以在
askopenfilename前再增加一行root.lift()强制抬升根窗口层级
内容的提问来源于stack exchange,提问作者JMonegro
相关产品推荐
相关产品推荐

