Python - Tkinter - 将目录输出从tkFileDialog.askdirectory放入tkinter Entry小部件

时间:2017-05-22 16:02:53

标签: python python-2.7 oop tkinter

我发现帮助我的唯一真实材料是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)

0 个答案:

没有答案