2014-10-07 92 views
-1

好吧,所以我试图部署一个Tkinter提示符到我的脚本中,简单地读取用户输入到ROOTDIR变量。Python 2.7 - Tkinter用户输入提示

下面是一个Tkinter脚本,它似乎是我试图完成的工作的理想选择,但遇到了将脚本绑定到我的基本脚本中也遇到麻烦的问题。

import Tkinter as tk 

class SampleApp(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 
     self.entry = tk.Entry(self) 
     self.button = tk.Button(self, text="Please enter path", command=self.on_button) 
     self.button.pack() 
     self.entry.pack() 

    def on_button(self): 
     print self.entry.get() 

app = SampleApp() 
app.mainloop() 

下面是我试图包含一个Tkinter提示符的基础程序。

import glob 
import os 
import xlrd 
import csv 

#set data path 
ROOTDIR = r'C:\Users\username\Desktop\Mults' 
wb_pattern = os.path.join(ROOTDIR, '*.xlsx') 

workbooks = glob.glob(wb_pattern) 
start_rownum = 3 # number of row eliminated 
with open('merged excel.csv', 'wb') as outcsv: 
writer = csv.writer(outcsv) 
for wb in workbooks: 
    book_path = os.path.join(ROOTDIR, wb) 
    book = xlrd.open_workbook(book_path) 
    sheet = book.sheet_by_index(0) 
    for row_num in xrange(start_rownum, sheet.nrows): 
     row = sheet.row_values(row_num) 
     writer.writerow(row) 

任何援助非常感谢!

谢谢!

+0

你说你遇到麻烦。你有什么样的麻烦?另外,代码的缩进也会搞砸。 – 2014-10-07 16:18:11

+0

@BryanOakley我无法理解如何使用Tkinter与我的脚本 – 2014-10-07 17:23:13

+0

为什么你不能复制/粘贴顶级代码到你的基本代码?如果您需要用户输入,那么需要哪里? – W1ll1amvl 2014-10-08 02:16:19

回答

0

这里是一个几乎直接复制粘贴,它应该工作?只有更改是将ROOTDIR设置为从tk窗口输入,并将其余部分写入一个函数中,以便在创建ROOTDIR时调用它。

import glob 
import os 
import xlrd 
import csv 
import Tkinter as tk 

def maincode(): 
    global ROOTDIR 
    wb_pattern = os.path.join(ROOTDIR, '*.xlsx') 

    workbooks = glob.glob(wb_pattern) 
    start_rownum = 3 # number of row eliminated 
    with open('merged excel.csv', 'wb') as outcsv: 
    writer = csv.writer(outcsv) 
    for wb in workbooks: 
     book_path = os.path.join(ROOTDIR, wb) 
     book = xlrd.open_workbook(book_path) 
     sheet = book.sheet_by_index(0) 
     for row_num in xrange(start_rownum, sheet.nrows): 
      row = sheet.row_values(row_num) 
      writer.writerow(row) 

class SampleApp(tk.Tk): 
    def __init__(self): 
     tk.Tk.__init__(self) 
     self.entry = tk.Entry(self) 
     self.button = tk.Button(self, text="Please enter path", command=self.on_button) 
     self.button.pack() 
     self.entry.pack() 

    def on_button(self): 
     global ROOTDIR 
     ROOTDIR = self.entry.get() 
     maincode() 

app = SampleApp() 
app.mainloop() 

如果这不起作用回到我:)

+0

谢谢您的时间!这工作。我很感激。 – 2014-10-09 13:41:47