我有一个 tkinter 应用程序,它的窗口标题中包含加载到应用程序中的文件的完整路径名。由于路径名通常很长,因此只能在窗口未最小化时显示。当它最小化(为图标)时,只有路径名的开头可见。所以我现在想将标题切换为仅文件名,窗口最小化。我在这里找到了一个解决方案并根据我的问题进行了调整:
import tkinter as tk
title_saved = ""
def __made_to_window(event):
print("__made_to_window")
global title_saved
if title_saved!="":
root.title(title_saved)
title_saved = ""
def __made_to_icon(event):
print("__made_to_icon")
global title_saved
if title_saved=="":
title_saved = root.title()
root.title("filename.py")
root = tk.Tk()
root.title("C/folder1/folder2/folder3/folder4/folder5/filename.py")
canvas = tk.Canvas(root, height=100, width=400)
canvas.grid()
root.bind("<Unmap>", __made_to_icon)
root.bind("<Map>" , __made_to_window)
root.mainloop()
正如您在我的示例代码中看到的,该解决方案有效。但我不喜欢它,因为当窗口最小化时,使用的绑定不仅被激活一次,而且被激活两次(在我的大应用程序中,当窗口最小化时,它被激活 10 次)。因此,必须检查变量 title_saved 是否已不再为空。
所以我正在寻找一种更优雅的解决方案,特别是因为我相信在最小化时更改标题一定是一个常见问题。
你有什么想法?
当您绑定到根窗口时,该绑定将被所有窗口继承。简单的解决方案是检查该事件是针对哪个窗口的,并且仅当该窗口是根窗口时才执行工作。