You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Tkinter开发文件下载GUI时,获取用户输入功能异常

解决Tkinter获取用户输入失败的问题

嘿,我一眼就看出问题所在了——你的代码里只定义了提示标签,却没有创建对应的输入框组件,直接调用url.get()和name.get()自然会报错,因为url和name这两个变量根本没关联到任何输入控件!

另外你代码里的Lab1....明显没写完,我帮你补全并完善整个程序,还加上了异常处理避免程序崩溃:

from tkinter import *
from tkinter import ttk
import urllib.request
from tkinter import messagebox

root = Tk(className='VideoDownloader')
root.geometry("400x200")
root.resizable(width=False, height=False)

# 主标题
Lab = ttk.Label(root, text='Download a file from any site')
Lab.grid(row=0, column=0, columnspan=2, pady=10)

# URL输入区域
Lab_url = ttk.Label(root, text='Enter file URL:')
Lab_url.grid(row=1, column=0, padx=5, pady=5, sticky=W)
url = ttk.Entry(root, width=30)  # 创建URL输入框
url.grid(row=1, column=1, padx=5, pady=5)

# 文件名输入区域
Lab_name = ttk.Label(root, text='Enter file name:')
Lab_name.grid(row=2, column=0, padx=5, pady=5, sticky=W)
name = ttk.Entry(root, width=30)  # 创建文件名输入框
name.grid(row=2, column=1, padx=5, pady=5)

def down():
    try:
        u = url.get().strip()
        n = name.get().strip()
        
        # 检查输入是否为空
        if not u or not n:
            messagebox.showerror("Error", "URL和文件名都不能为空!")
            return
        
        # 执行下载
        urllib.request.urlretrieve(u, n)
        messagebox.showinfo("Success", "文件下载完成!")
    except Exception as e:
        messagebox.showerror("Download Failed", f"下载出错:{str(e)}")

# 下载按钮
download_btn = ttk.Button(root, text='Download', command=down)
download_btn.grid(row=3, column=0, columnspan=2, pady=15)

root.mainloop()

关键修改点说明:

  • 新增了url和name对应的ttk.Entry输入框组件,并通过grid布局正确摆放
  • 给down函数添加了异常处理:捕获下载过程中的各种错误(比如无效URL、网络问题、权限不足等),用弹窗提示用户
  • 增加了输入校验:检查URL和文件名是否为空,避免无效操作
  • 补全了所有控件的布局参数(比如padx、pady、sticky),让界面更美观

这样修改后,你的程序就能正常获取用户输入并执行下载操作啦!

内容的提问来源于stack exchange,提问作者AmineTrabelsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:34:09