2012-11-21 64 views
2

您好我有一些python腳本。我需要用幾個按鈕創建一個GUI,通過瀏覽打開這些文件。我只需點擊GUI按鈕即可運行這些腳本,並將輸出寫入n Excel表。我試着用下面的代碼,但是我可以讀取文件!請幫忙? 謝謝瀏覽文件打開並運行使用GUI python

from Tkinter import *    
from tkFileDialog 
import askopenfilename  

def callback(): 
    r = open(askopenfilename(),'r') 

a = Button(text='click me', command=callback) 
a.pack() 

mainloop() 
+0

綁定動作以按鈕 –

回答

2

回調()內,而不是打開該文件,使用的execfile( 「abc.py」)

def callback(): 
    abc = askopenfilename() 
    execfile("abc.py") 
0

下面這段代碼是一個簡單的例子,它讀取從選定的輸入文件中的每一行,然後將其寫入稱爲output.xls一個新的Excel文件。它使用優秀的xlwt library創建excel文件。您也可以選擇使用csv模塊創建csv文件,該模塊是Excel標準庫中的一部分,該文件也可由Excel讀取。使用xlwt的優點是,您可以應用格式化,合併單元格,公式以及屬於xls文件格式一部分的許多其他功能。

import xlwt 
from Tkinter import *    
from tkFileDialog import askopenfilename  

def callback(): 
    filename = askopenfilename() 
    wb = xlwt.Workbook() 
    ws0 = wb.add_sheet('Sheet1') 
    with open(filename, 'r') as f: 
     for i, line in enumerate(f): 
      ws0.write(i, 0, line.strip()) 
    wb.save('output.xls') 

errmsg = 'Error!' 
a = Button(text='click me', command=callback) 
a.pack() 
mainloop() 
+0

馬爾謝謝你給執行該文件寶貴的建議來嘗試xlvt!但我的問題實際上是運行腳本。雅我可以讀取文件,甚至可以打印所有行。我收到錯誤「Line_Read = linecache.getline(File_Name,Loop_Counter) NameError:全局名稱'linecache'未定義」,而運行和linecache已經導入。如果你對這個錯誤有任何想法,請給予幫助 – user19911303

+0

你的python安裝可能有問題。你的代碼在我沒有錯誤的情況下工作得很好。嘗試並重新安裝python,並在另一臺機器上嘗試您的代碼作爲測試。 –

0
 import Tkinter, tkFileDialog 
     root = Tkinter.Tk() 
     root.withdraw() 
     dirname=tkFileDialog.askdirectory(parent=root,initialdir="/",title='Please select a directory') 
     do something with dirname 
     print dirname 

#This code for file selection: 

    from Tkinter import Tk 
    from tkFileDialog import askopenfilename 

    Tk().withdraw() # we don't want a full GUI, so keep the root window from appearing 

    filename = askopenfilename() # show an "Open" dialog box and return the path to the selected file 
    print(filename) 
+0

儘管此代碼可能會回答這個問題,但提供有關如何解決問題和/或爲何解決問題的其他上下文可以提高答案的長期價值。 –

+0

@DonaldDuck是的,現在通過我編輯它的代碼。代碼選擇文件和代碼選擇目錄。 –