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

如何获取Tkinter中Entry组件的文本内容以实现打印及参数调用

Tkinter Entry输入框文本获取问题修复

原代码错误点

  • Entry组件的pack()方法返回值为None,原代码直接执行e_out = Entry(root1).pack(),导致e_out存储的是None而非Entry实例,无法调用方法读取输入内容
  • resample函数内部重复定义了局部变量e_out,直接覆盖了全局存储的Entry组件对象,且错误尝试直接将变量拼接进命令字符串,没有调用取值方法
  • 获取Entry内的文本内容需要调用Entry实例的.get()方法
  • 原代码重复创建Tk()主窗口,多窗口场景下副窗口应使用Toplevel()创建,避免出现窗口消息循环异常
  • 从文件选择器获取的filename是包含完整路径和源文件后缀的字符串,直接拼接.mp4会导致路径错误,需要先拆分源文件后缀再使用

修正后完整代码

from tkinter import *
from tkinter import filedialog
import os

def resample():
    # 获取Entry输入内容并打印
    out_name = e_out.get()
    print(out_name)
    # 拆分源文件路径和后缀
    file_path = os.path.splitext(filename)[0]
    # 拼接ffmpeg命令
    cmd = f'ffmpeg -i "{file_path}.mp4" -vf "tblend=all_mode=average,framestep=2,tblend=all_mode=average,framestep=2" -r 60 "{out_name}.mp4"'
    os.system(cmd)
    os.system("cls")

def file_browser():
    global e_out
    global filename
    # 副窗口使用Toplevel,不要重复创建Tk
    root1 = Toplevel()
    root1.geometry("600x400")
    # 先创建Entry实例赋值给e_out,再单独调用pack
    e_out = Entry(root1)
    e_out.pack()
    filename = filedialog.askopenfilename(initialdir="/Videos", title="Select A File", filetypes=(("videos", "*.mp4"),("all files", "*.*")))
    print(filename)
    b1 = Button(root1, text="resample", command=resample)
    b1.pack()

root = Tk() 
root.geometry("800x500") 
root.title("intler") 
choose = Button(root, text="choose a file", command=file_browser)
choose.pack()

root.mainloop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:45:08