您
UserFileInput应该返回
var,而不是
w。然后,您可以
var.set(dirname)在
askdirectory不需要返回任何内容的函数中使用。
但是我不确定您要尝试实现什么
text = str(dirname) if dirname else status。为什么不使用,
text =status因为
dirname还不能在此定义?
编辑:这应该以您想要的方式工作。“打印输入文字”按钮显示您可以检索输入框中的所有内容,无论是用户编写的内容还是代码所放置的内容。
from Tkinter import *import tkFileDialogdef askdirectory(): dirname = tkFileDialog.askdirectory() if dirname: var.set(dirname)def UserFileInput(status,name): optionframe = frame(root) optionLabel = Label(optionframe) optionLabel["text"] = name optionLabel.pack(side=LEFT) text = status var = StringVar(root) var.set(text) w = Entry(optionframe, textvariable= var) w.pack(side = LEFT) optionframe.pack() return w, vardef Print_entry(): print var.get()if __name__ == '__main__': root = Tk() dirBut = Button(root, text='askdirectory', command = askdirectory) dirBut.pack(side = RIGHT) getBut = Button(root, text='print entry text', command = Print_entry) getBut.pack(side = BOTTOM) w, var = UserFileInput("", "Directory") root.mainloop()


