使用Tkinter访问python中所选目录的名称

时间:2015-07-09 00:57:29

标签: python tkinter

我正在尝试使用Tkinter网格的最小GUI来使我的python程序更易于访问。

我创建了一个类,它创建一个按钮,要求选择一个目录。这应该是正常的。但是,我希望将目录的路径镜像到按钮下方的行中。

UIDevice

使用中:

class dir_choice:
  def __init__(self, master, text, prow, pcol):
    self.dir_button = Button(master, text = text, command = self.askdir)
    self.dir_button.grid(row = prow, column = pcol)

    self.feedb = Label(master, text = "text")
    self.feedb.grid(row = prow+1, column = pcol)

  def askdir(self):
    name = askdirectory() #from tkFileDialog
    return name

而不是dir1 = dir_choice(root, "FOLDER 1", 3, 2) 如果选择了该目录,我希望在按钮下方显示text = "text"之类的内容。

我认为我不正确,假设它在"C:/user/A/B/C"变量中,或者如果是,我需要以不同的方式定义它。所以我的问题是如何访问name函数的值以及如何将该值推送到askdirectory()标签。

1 个答案:

答案 0 :(得分:4)

这可能只是一个复制粘贴错误,但缩进不正确。

PEP-8样式调用了以CamelCase命名的类。它不会让你的代码运行得更快,但可读性很重要。

避免链接几何管理方法。如果将几何方法(例如grid())链接到窗口小部件创建上,最终会保存这些方法'返回值始终为None,因此self.dir_buttonself.feedb都只是None。相反,将几何管理方法放在一个单独的行上。

要更改窗口小部件的属性,只需configure()它(或简称为config())。 askdirectory()返回一个字符串,因此您可以直接使用它或将其保存为self.directory_name之类的内容。它在return任何地方都无用,因为该函数是由Button调用的,而Button无法对返回的值执行任何操作。

class DirChoice:
    def __init__(self, master, text, prow, pcol):
        self.dir_button = Button(master, text = text, command = self.askdir)
        self.dir_button.grid(row = prow, column = pcol)
        self.feedb = Label(master, text = "text")
        self.feedb.grid(row = prow+1, column = pcol)
    def askdir(self):
        self.feedb.config(text= askdirectory()) #from tkFileDialog