1

我对 Python 很陌生,但本周开始编写一些小脚本。我目前正在尝试编写一个简单的程序来绘制一些数据。我想做以下事情:

  • 要求用户使用 GUI 选择数据目录
  • 对于目录中的每个文件,绘制一个图
  • 用鼠标单击关闭每个绘图并前进到下一个绘图

我主要是让程序开始工作 - 我可以使用 选择目录tkFileDialog.askdirectory,然后读入数据,制作绘图并使用鼠标单击推进它们。

我的问题是使用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()
4

1 回答 1

1

由于在文件对话框之后您似乎没有使用 Tkinter,因此您可以root.destroy() 在让用户选择文件后立即关闭 Tk 根窗口。

于 2013-10-22T13:40:50.990 回答