Python show()重新打开旧的tkinter对话框
编辑:这似乎是一个仅限于Mac OS系统上的Tcl/Tk的问题。因此,如果您没有这方面的经验,此主题可能没有实际意义… 我想要一个Python脚本,它可以做两件事:Python show()重新打开旧的tkinter对话框,python,macos,matplotlib,tkinter,filedialog,Python,Macos,Matplotlib,Tkinter,Filedialog,编辑:这似乎是一个仅限于Mac OS系统上的Tcl/Tk的问题。因此,如果您没有这方面的经验,此主题可能没有实际意义… 我想要一个Python脚本,它可以做两件事: 通过Tkinter文件对话框向用户询问文件名 从所述文件中绘制一些数据 问题是,matplotlib使用Tkinter进行图形表示,每当我在非交互模式下调用pyplot.show(),就会再次弹出(关闭前)文件对话框。在我看来,这就像是pyplot.show()。然而,我没有在这方面找到任何帮助。我尝试了Python2.7和3.3,
pyplot.show()
,就会再次弹出(关闭前)文件对话框。在我看来,这就像是pyplot.show()。然而,我没有在这方面找到任何帮助。我尝试了Python2.7和3.3,因为Tkinter模块的很多地方似乎都发生了变化,但这是相同的现象。我想到的一个稍微奇怪的解决方法是进入matplotlib交互模式,然后使用raw\u input()
命令保持窗口打开
下面是一个在Python 2和Python 3中工作的最小代码片段,以说明问题:
导入matplotlib.pyplot作为plt
#导入Tkinter GUI(从Python 2.x更改为3.x)
尝试:
进口Tkinter
除(恐怖)外:
将tkinter作为tkinter导入
尝试:
从tkFileDialog导入askopenfilename
除(恐怖)外:
从tkinter.filedialog导入askopenfilename
root=Tkinter.Tk()
root.draw()
输入\ u filename=askopenfilename(master=root)
#这似乎很有希望,但没有帮助
root.destroy()
plt.图()
#取消注释以切换到交互模式是一种解决方法
#plt.ion()
plt.show()
#Python 2.x和3.x兼容等待输入:
try:input=原始输入
除了名称错误:通过
#等待击键(用于交互模式)
输入(“完成后按enter…”)
很抱歉,如果我在这里遗漏了一些明显的东西,我对Python不是很精通,并且我没有找到关于这个问题的令人满意的信息。但我的直觉告诉我,必须有一个简单而优雅的解决方案
系统信息(我尝试过的最新版本):
- Python 3.3(来自MacPorts)
- matplotlib 1.3.x(从github master构建)
- Mac OS X 10.8.3
- Tcl/Tk 8.6.0(来自MacPorts)
谢谢
Floh在matplotlib上不为我复制。\uuuuu版本\uuuu==“1.3.x”
。。。如果您使用的是旧版本,请尝试更新?抱歉,我忘了提及(因为这可能很重要,尤其是在使用Tkinter时):我主要是在Mac OS 10.8.3上使用MacPorts预先构建的matplotlib 1.2.0尝试过这一点。我将尝试在我的Linux机器上运行它。那么我将尝试更新matplotlib。不过,我必须手动编译它并更新所有Python模块依赖项,因此可能需要一段时间。谢谢,嗯。matplotlib甚至还没有正式的“1.3.x”版本标签。我现在正在克隆github主分支,但我不确定这是一条路。是的,这就是我安装它的方式。不,对不起。在使用Tk 8.6.0的MacOSX上,Python 3.3和matplotlib 1.3.x仍然存在问题。我会把版本信息放到原来的帖子里,谢谢提醒。