我发现帮助我的唯一真实材料是this SO post,它让我达到了这一点。
我试图基本上让用户点击"浏览"按钮,在tkFileDialog.askdirectory
窗口出现时选择目录,当用户选择适当的目录时 - 输出放在Tkinter Entry小部件内。
以下是我目前使用的代码。现在,它在NameError: global name 'var' is not defined
窗口内提交目录时会抛出tkFileDialog.askdirectory
。
我还在慢慢学习Python,并决定尝试使用OOP。因此,为什么我现在变得非常困惑,代码很混乱/ hacky。
class MainMenuFrames:
def __init__(self, master):
self.TitleFrame = ttk.Frame(master)
self.OptionsLabelFrame = ttk.LabelFrame(master, text="Options")
self.TitleFrame.pack(side=TOP,
fill="both",
expand=True)
self.OptionsLabelFrame.pack(padx=OptionFramePadding,
pady=OptionFramePadding)
class OptionsContent:
def __init__(self, bottomframe):
def askdirectory():
dirname = tkFileDialog.askdirectory(**self.dir_opt)
if dirname:
var.set(dirname)
return var
self.dir_opt = options = {}
options["initialdir"] = "C:\\"
options["mustexist"] = False
options["parent"] = root
def UserFileInput(status):
text = status
var = StringVar(root)
var.set(text)
w = Entry(bottomframe, width=27, textvariable=var)
w.grid(row=1, column=2, padx=(5, 5), columnspan=2, sticky=E)
return w, var
SVNPathEntry = UserFileInput("")
SVNBrowseButton = ttk.Button(bottomframe,
text="Browse...",
command=askdirectory)
SVNBrowseButton.grid(row=2, column=3, padx=(0, 5), sticky=E)
MainMenu = MainMenuFrames(root)
Title = TitleLabel(MainMenu.TitleFrame)
Options = OptionsContent(MainMenu.OptionsLabelFrame)
有问题的错误在if语句var.set(dirname)