【问题标题】:Python 2.7 - Tkinter user entry promptPython 2.7 - Tkinter 用户输入提示
【发布时间】:2014-10-07 15:41:24
【问题描述】:

好的,所以我正在尝试将 Tkinter 提示部署到我的脚本中,以简单地将用户条目读取到 ROOTDIR 变量中。

下面是一个 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)

非常感谢任何帮助!

谢谢!

【问题讨论】:

  • 你说你遇到了麻烦。你遇到什么麻烦了?此外,您的代码缩进搞砸了。
  • @BryanOakley 我无法理解如何在我的脚本中使用 Tkinter
  • 为什么不能将顶部代码复制/粘贴到基本代码中?如果您需要用户输入,在哪里需要?
  • @W1ll1amvl 这就是我卡住的地方。试图将顶层代码与基础代码交织在一起
  • 我会发布一个答案,你可以看看它是否有帮助

标签: python python-2.7 tkinter


【解决方案1】:

这是一个几乎直接的复制粘贴,应该可以吗?唯一的改变是将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()

如果这不起作用,请回复我:)

【讨论】:

  • 感谢您的宝贵时间!这行得通。我很感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2018-09-17
  • 1970-01-01
相关资源
最近更新 更多