1

私は Python を初めて使用しますが、今週いくつかの小さなスクリプトを書き始めました。現在、いくつかのデータをプロットする簡単なプログラムを作成しようとしています。私は次のことをしたいと思います:

  • GUI を使用してデータ ディレクトリを選択するようにユーザーに依頼する
  • ディレクトリ内の各ファイルについて、プロットを作成します
  • マウスをクリックして各プロットを閉じ、次のプロットに進みます

私はほとんどプログラムを動作させました - を使用してディレクトリを選択tkFileDialog.askdirectoryし、データを読み込み、プロットを作成し、マウスのクリックを使用してそれらを進めます。

私の問題は、で開く TK ルート ウィンドウにありますtkFileDialog。追加のウィンドウを使用withdraw()すると開かず、最初のプロットのみが表示されます (マウスをクリックするとそのプロットが閉じますが、次のプロットは表示されません)。を使用しない場合withdraw()、最初のプロットの後で余分なウィンドウを手動で閉じて、2 番目のプロットに進む必要があります。

余分なウィンドウを表示しないディレクトリを選択する方法があるかどうか疑問に思っていますか?

私の思考プロセスを示すために、いくつかのサンプルコードを添付しています。これは実際のデータを呼び出しませんが、問題を再現します ( .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 に答える