我是Tkinter和GUI设计的新手,但我非常兴奋学习。我试图创建一个用户界面,允许用户加载Excel电子表格.xls。如果电子表格成功打开,那么应弹出一个按钮,允许用户将信息导入数据库。tkinter filedialog开放方法奇怪的行为
我的问题是,每当我运行这段代码时,弹出的文件对话框会在弹出的实际浏览按钮之前弹出。我做了一些测试,这种行为是由于调用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()
谢谢您解决了单击按钮之前打开文件对话框的问题。没有意识到,加入()调用函数而不是命令=函数名。 – user3761743