【发布时间】:2014-08-17 23:46:50
【问题描述】:
我是 Tkinter 和 GUI 设计的新手,但我很高兴学习。我正在尝试创建一个允许用户加载 Excel 电子表格 .xls 的用户界面。如果电子表格成功打开,则应弹出一个按钮,允许用户将信息导入数据库。
我的问题是,每当我运行此代码时,文件对话框会在主 gui 弹出实际浏览按钮之前弹出。我做了一些测试,这种行为是由于调用 fname.show()。问题是,如果我错了,请纠正我,我需要使用 fname.show() 来获取文件路径,以便我可以将文件路径传递给 xlrd.open_workbook 方法以从电子表格中读取数据。还有另一种获取文件名的方法吗?我觉得应该有一个简单的解决方案,但是关于 tkFileDialog 细节的文档并不多。
谢谢。
下面是我的代码:
import config
from importdb import importTLAtoDB
import Tkinter as tk
import tkFileDialog as tkfd
import tkMessageBox as tkmb
import xlrd
def openFile():
#returns an opened file
fname = tkfd.Open(filetypes = [("xls files","*.xls")])
fpath = fname.show()
if fname:
try:
TLA_sheet = xlrd.open_workbook(fpath).\
sheet_by_name('Q3 TLA - TOP SKUs')
tk.Button(root, text = "Import TLAs", command = importTLAtoDB(TLA_sheet)).pack()
tkmb.showinfo("Success!", "Spreadsheet successfully loaded. \n\
Click Import TLAs to load TLA info into RCKHYVEDB database.")
except:
tkmb.showerror("Error", "Failed to read file\n '%s'\n\
Make sure file is a type .xls" % fpath)
#GUI setup
root = tk.Tk()
root.title("TLA Database Tool")
tk.Button(root, text = "Browse", command = openFile(), width = 10).pack()
root.mainloop()
【问题讨论】:
标签: python excel user-interface tkinter filedialog