如何解决在脚本中使用 FigureCanvasTkAgg 时 py2app 的问题
运行 Big Sur 的 Mac 上的 Python 3.9:
我有一个使用 tkinter 的运行脚本,它在图形画布上绘制数据框,我想使用 py2app 转换为 Mac 应用程序。这是脚本,用户在其中选择一个 .csv 文件并绘制它:
import pandas as pd
from matplotlib import pyplot as plt
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from tkinter import Tk,filedialog,Menu
root = Tk()
root.wm_title("My App")
root.configure(bg='lightgrey')
### Function to determine all widgets open in window
def all_children (window) :
_list = window.winfo_children()
for item in _list :
if item.winfo_children() :
_list.extend(item.winfo_children())
return _list
def _open():
### Close all open widgets
widget_list = all_children(root)
for item in widget_list:
item.pack_forget()
### File dialog
root.filename = filedialog.askopenfilename(initialdir = "Users/fishbacp/Desktop",title=
"Select file",filetypes = (("csv","*.csv"),("all files","*.*")))
df=pd.read_csv(root.filename)
fig = Figure() # create the figure
ax = fig.add_subplot(111) # create the subplot
df.plot(ax=ax)
canvas = FigureCanvasTkAgg(fig,master=root)
canvas.draw()
canvas.get_tk_widget().pack(side=TOP)#,fill='both',expand=True)
def _quit():
root.quit()
root.destroy()
menubar = Menu(root)
filemenu = Menu(menubar,tearoff=0)
filemenu.add_command(label="Open",command=_open)
filemenu.add_command(label="Exit",command=_quit)
menubar.add_cascade(label="Options",menu=filemenu)
root.config(menu=menubar)
root.mainloop()
我按照 py2app 文档中给出的 py2app 常规步骤进行操作:
py2applet --make-setup MyApplication.py
rm -rf build dist
python setup.py py2app -A
我从终端成功运行了应用程序,然后进入。
python setup.py py2app
应用程序已经创建,但是当我双击它时,出现了一个小错误弹出框。控制台没有提供有用的信息。
因为我已经能够将简单的 matplotlib 示例合并到应用程序中,所以我觉得我已经将问题隔离到以下导入语句中。
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
有什么我可以添加到 setup.py 文件来解决这个问题的吗?我查看了用于自定义安装文件的 py2app 文档,但不清楚如何从模块中包含特定功能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。