程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Python Tkinter 获取 askopenfilenames() 的结果大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Python Tkinter 获取 askopenfilenames() 的结果?

开发过程中遇到Python Tkinter 获取 askopenfilenames() 的结果的问题如何解决?下面主要结合日常开发的经验,给出你关于Python Tkinter 获取 askopenfilenames() 的结果的解决方法建议,希望对你解决Python Tkinter 获取 askopenfilenames() 的结果有所启发或帮助;

我使用 Tkinter 作为 GUI 库,我需要通过调用 askopenfilenames 来获取我选择的文件列表。 这是我的功能^

def choose_file(file_List)
    file_List = fd.askopenfilenames()
file_List = ()
b1 = button(command = lambda: choose_file(file_List))

file_List - 在外部范围内是可变的。但是在调用函数之后,这个变量是空的。我做错了什么?

解决方法

试试:

import tkinter.filedialog as fd
import tkinter as tk

def choose_file():
    global file_list
    file_list = fd.askopenfilenames()

file_list = ()
root = tk.Tk()
b1 = tk.button(root,text="Click me",command=choose_filE)
b1.pack()
root.mainloop()

变量 file_list 不是全局变量,因为它是不可变的。要使其全局化,您必须将 global file_list 添加到函数定义的开头。欲了解更多信息,请阅读:Why you can change immutable if it's global。

,

您的代码中有两个不同的 file_list 变量。一个在全球范围内

file_list = ()

一个在函数范围内。

def choose_file(file_list):

    file_list = fd.askopenfilenames()

您正在将 askopenfilenames 返回的列表分配给函数作用域变量 - 在函数的任何地方,file_list 都会将 askopenfilenames 中的列表作为值,您可以通过添加看到print(file_list) 两次,一次在开始,一次在结束。

要修改全局变量而不是局部变量,您可以将局部(函数作用域)变量设为全局变量

file_list = ()

def choose_file():
    global file_list
    file_list = fd.askopenfilenames()

b1 = Button(command = choose_filE)

在函数声明之前必须移动变量初始化(我认为它会给出 UnboundLocalError 或其他东西),可以删除 lambda,并且您不需要将 file_list 作为论证。

大佬总结

以上是大佬教程为你收集整理的Python Tkinter 获取 askopenfilenames() 的结果全部内容,希望文章能够帮你解决Python Tkinter 获取 askopenfilenames() 的结果所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。