如何获取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_
相关产品推荐
相关产品推荐

