2013-10-22 26 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