【问题标题】:Returning directory address from tkinter button从 tkinter 按钮返回目录地址
【发布时间】:2017-08-24 23:50:38
【问题描述】:

我正在尝试创建一个程序来提取在一个函数中找到的目录地址并在另一个函数中使用该地址。要打开文件浏览器,我使用的是 tkinter 按钮。任何人都可以提供一些有关此修复的见解吗?

def openFile():
    directory = filedialog.askdirectory(parent=root,initialdir="/")
    return directory
def callback():
    path = str(directory)

dirButton = Button(Frame1, text="Choose", command=openFile)
dirButton.pack()

nextButt = Button(Frame1, text="Next", command=callback)
nextButt.pack()

【问题讨论】:

  • 这个确切的问题本周已经被问了两三次了。提问前有没有做过调查?
  • 我有,但无济于事。有几个人建议添加“return...”可以解决这个问题,但我没有成功。
  • 没关系,刚刚学会了全局变量的值!很抱歉占用您的时间。

标签: python function button tkinter


【解决方案1】:

我可以通过将变量“目录”设置为全局变量来解决这个问题。

def openFile():  
    global directory
    directory = filedialog.askdirectory(parent=root,initialdir="/")
    return

def callback():
    path = str(directory)

dirButton = Button(Frame1, text="Choose", command=openFile)
dirButton.pack()

nextButt = Button(Frame1, text="Next", command=callback)
nextButt.pack()

【讨论】:

  • 你不需要在directory上调用str,因为directory已经是一个字符串了。
【解决方案2】:
path = str(directory)

应该是

path = str(openFile())

这一行运行函数openFile() 并将函数返回的内容存储在path 中。现在,如果您真的想拥有 2 个功能,一个简单的解决方法是:

def openFile():
    global directory
    directory = filedialog.askdirectory(parent=root,initialdir="/")
def callback():
    global directory
    path = str(directory)

这里的目录是全局的,所以在两个函数中都是一样的。 此外,当您向按钮发出命令时,您正在寻找的是

command=lambda:openFile())

(调用函数的时候别忘了在最后加上这些“()”)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 2015-03-18
    • 2022-01-24
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多