我有一个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()