2013-10-22 24 views
1

我对Python很陌生,但本周开始编写几个小脚本。我目前正在编写一个简单的程序来绘制一些数据。我想做到以下几点:Tkinter/pylab冲突?

  • 要求用户使用GUI
  • 为目录中的每个文件选择数据目录,做图
  • 接近每个情节用鼠标点击前进到下一个情节

我大部分得到程序的工作 - 我可以选择使用tkFileDialog.askdirectory的目录,然后在数据读取方面,虽然用鼠标点击他们做出的情节和进步。

我的问题是与TK根窗口打开tkFileDialog。如果我使用withdraw(),则额外的窗口不会打开,但只会显示第一个图(鼠标单击会关闭该图,但不会显示下一个图)。如果我不使用withdraw(),必须在第一个绘图之后手动关闭额外的窗口以提前到第二个窗口。

我想知道是否有方法可以选择避免显示额外窗口的目录?

我附上一些示例代码来展示我的思维过程。这不叫的实际数据,但仍然重现问题(你需要的.D更改为您的目录中有一些文件类型):

import numpy as np 
from pylab import * 
import glob 
import os 
import Tkinter, tkFileDialog 

################################################## 
#define the mouse click event 
################################################## 
def moveon(event): 
    close() 

################################################## 
#ask for the directory 
################################################## 
root = Tkinter.Tk() 
#root.withdraw() 
direc = tkFileDialog.askdirectory(parent=root,initialdir="/",title='Please select a directory') 
os.chdir(direc) 
for files in glob.glob("*.D*"): 

    ################################################## 
    #Read in the data 
    ################################################## 
    #assume this reads x and y from each file 
    x = [1, 2] 
    y = [3, 4] 

    ################################################## 
    #loop though the plots 
    ################################################## 
    fig = figure(1) 
    plot(x,y) 
    cid = fig.canvas.mpl_connect('button_press_event',moveon) 
    show() 

回答

1

因为你似乎不要在您的文件对话框之后使用Tkinter,您可以在用户选择文件后立即关闭Tk根窗口root.destroy()

+0

这工作 - 谢谢! – Jennifer