我正在使用 tkinter 为 GUI 设计一个桌面应用程序。该应用程序生成了一些我想以图形方式呈现为树的嵌套数据结构。为此,我使用的是 ete3 包。但是,当我将树渲染成图像文件时,tkinter 根窗口中的菜单会变得混乱。树被正确渲染到图像中。
这是代码的简化版本,它有同样的问题:
from tkinter import *
from tkinter import ttk, filedialog
from ete3 import Tree
root = Tk()
root.geometry("300x300")
menubar = Menu(root)
root['menu'] = menubar
file = Menu(menubar, tearoff=0)
menubar.add_cascade(menu=file, label='File')
file.add_command(label="Open")
def plot():
direction = filedialog.asksaveasfilename(defaultextension=".jpg", filetypes=(("jpg file", "*.jpg"),))
tree = Tree("((a,b),c);")
tree.render(direction)
ttk.Button(root, text="Plot tree to file", command=plot).grid()
root.mainloop()
在渲染树之前,应用程序如下所示: image1
在渲染树之后: image2
此外,如果我删除该tree.render(direction)
行,则不会出现问题。有什么想法可能导致这种情况吗?