首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Tkinter中获取文件名并在选择后显示它

在Tkinter中获取文件名并在选择后显示它
EN

Stack Overflow用户
提问于 2021-11-22 08:42:31
回答 1查看 52关注 0票数 0

程序员应该创建一个窗口,在中心放置一个按钮。当按下按钮打开一个需要选择文件的系统窗口,然后在按钮下面写上一个文件名。我在最后一部分遇到了问题,文件名只在控制台上显示,试图将filename从函数中取出,但我得到了一个错误。

代码语言:javascript
运行
复制
import tkinter as tk
from tkinter import filedialog
from tkinter.constants import CENTER
from tkinter.filedialog import askopenfilename

def UploadAction(event=None):
    filename = filedialog.askopenfilename()
    print('Selected:', filename)

root= tk.Tk()

canvas1 = tk.Canvas(root, width = 300, height = 300)
canvas1.pack()
    
button1 = tk.Button(text='Click Me',command=UploadAction, bg='brown',fg='white')
canvas1.create_window(150, 150, window=button1)
button1.place (relx = 0.5, rely = 0.5, anchor=CENTER)
canvas1.create_text(relx = 0.5, rely = 0.7, anchor=CENTER, text= filename, fill="black", font=('Helvetica 15 bold'))

root.mainloop()  
EN

Stack Overflow用户

回答已采纳

发布于 2021-11-22 21:02:21

您似乎正在尝试在画布上显示文本,但有一种使用标签并更改其文本的更简单的方法:

代码语言:javascript
运行
复制
import tkinter as tk
from tkinter.filedialog import askopenfilename

filename = None
def UploadAction(event=None):
    filename = askopenfilename()
    print('Selected:', filename)
    # Change text of label
    label1['text'] = filename

root= tk.Tk()
    
button1 = tk.Button(text='Click Me', command=UploadAction, bg='brown', fg='white')
button1.pack(padx=2, pady=5)
label1 = tk.Label(text='Please choose a file')
label1.pack(padx=2, pady=2)

root.mainloop()

如果只想显示文件名,请执行以下操作:

代码语言:javascript
运行
复制
import tkinter as tk
from tkinter.filedialog import askopenfilename

filename = None
def UploadAction(event=None):
    filename = askopenfilename()
    # Cut path to the file off
    filename = filename.split('/')[len(filename.split('/'))-1]
    print('Selected:', filename)
    label1['text'] = filename

root= tk.Tk()
    
button1 = tk.Button(text='Click Me', command=UploadAction, bg='brown', fg='white')
button1.pack(padx=2, pady=5)
label1 = tk.Label(text='Please choose a file')
label1.pack(padx=2, pady=2)

root.mainloop()
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70063008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档