【发布时间】:2021-11-22 08:42:31
【问题描述】:
程序应该创建一个窗口,在中心放置一个按钮。当按下按钮打开一个需要选择文件的系统窗口时,应在按钮下方写入文件名。我在最后一部分遇到了问题,文件名仅显示在控制台上,试图让filename 失效,但出现错误。
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()
【问题讨论】:
-
一种解决方案将
filename设为全局(来源:w3schools.com/python/python_variables_global.asp) -
button1.place(...)在使用canvas1.create_window(...)将button1放入画布后不应执行。执行canvas1.create_text(..., text=filename, ...)时,filename也未定义。
标签: python python-3.x tkinter