如何使用输入到Entry小部件中的文件路径作为变量



我有一个GUI,它生成一个Entry小部件和一个Button小部件。用户应该输入一个文件路径(例如"C:Usersexampleexample"(,该文件路径用作函数LoopAnalysis()的变量。

当我执行代码时,小部件工作,我可以将文件路径复制并粘贴到Entry小部件中,但当我使用Button小部件执行命令时,我会得到以下错误:

FileNotFoundError: [WinError 3] The system cannot find the path specified: ''

如果用户在Entry窗口中输入文件路径,是否有特定的语法将其用作变量?例如,我知道,对于python,如果我手动定义这样的变量,通常情况下。

Directory = r'C:Usersexampleexample'

我需要在python的文件路径之前添加r,以将整行识别为文件路径,而不考虑文件路径中的特殊字符。

如何为我的函数执行此操作?

Torque_Analysis已经定义并正常工作。

ws = Tk()
ws.title("Torque Analysis")
ws.geometry('1000x150')
ws['bg'] = 'black'
def LoopAnalysis(Directory):
for filename in os.listdir(Directory):
if filename.endswith(".csv"):
Torque_Analysis(os.path.join(Directory, filename))
plt.figure()
plt.show(block = False)
else: continue
UserEntry = Entry(ws, width = 150)
UserEntry.pack(pady=30)
Directory = UserEntry.get()
Button(ws,text="Click Here to Generate Curves", padx=10, pady=5, command=lambda: LoopAnalysis(Directory)).pack()
ws.mainloop()

您在创建入口小部件后立即调用get方法,因此它将返回一个空字符串。在GUI编程中,您需要在需要数据的时候从窗口小部件获取数据,而不是之前。

我的建议是而不是将值传递给函数。相反,让函数调用get:

Button(..., command=LoopAnalysis)
...
def LoopAnalysis():
Directory = UserEntry.get()
...

正如问题注释中所述,一旦程序启动,您将调用UserEntry.get()一次。则输入框为空,因此空字符串被读取并存储在Directory中,并且Directory的内容不再改变。

相反,您需要在每次按下按钮时调用UserEntry.get()

试试这个:

from tkinter import *
import os
ws = Tk()
ws.title("Torque Analysis")
ws.geometry('1000x150')
ws['bg'] = 'black'
def LoopAnalysis(Directory):
for filename in os.listdir(Directory):
if filename.endswith(".csv"):
Torque_Analysis(os.path.join(Directory, filename))
plt.figure()
plt.show(block = False)
else: continue
UserEntry = Entry(ws, width = 150)
UserEntry.pack(pady=30)
Button(ws,text="Click Here to Generate Curves", padx=10, pady=5, command=lambda: LoopAnalysis(UserEntry.get())).pack()
ws.mainloop()

相关内容

  • 没有找到相关文章

最新更新