变量未在范围内定义
variable not defined in range
我今天才开始学习Python,因为我需要在 PARAVIEW 中创建一个宏。
我有几个名为 namefile.timestep 的网格文件(例如:p3d.030000)
我想用宏打开这个 PLOT3D 文件,拍一张网格照片,然后用这些照片制作电影。
打开这些文件我首先需要知道的是它们的名称(包括路径 ex:home/enrico/desktop/p3d.030000)。
我想要一个打开 GUI 的宏,我在其中插入文件夹路径、文件的根名称(例如:p3d)和时间步长(我给出第一个时间步长、间隔和文件数)。使用这些数据,我可以创建完整的路径。然后我将一次打开它们一个来创建一个 snapchat 并将此图保存在文件 .png 中。
然后用这张照片我会制作一部电影(仍然要弄清楚如何)
我坚持构建完整的文件夹路径。代码告诉我变量 firsttimestep 没有在 for 循环中定义。
我不知道我做错了什么。可能是一个简单的问题,但我是初学者。
感谢您的帮助
#simple GUI
from Tkinter import *
class Application(Frame):
def __init__(self,master):
"Initialize the Frame"
Frame.__init__(self,master)
self.grid()
inp=self.create_widgets()
def create_widgets(self):
self.instruction=Label(self, text="Enter the folder PATH")
self.instruction.grid(row=0,column=0,columnspan=2,sticky=W)
self.path=Entry(self)
self.path.grid(row=1,column=1,sticky=W)
self.instruction=Label(self, text="Enter the PLOT3D file name")
self.instruction.grid(row=3,column=0,columnspan=2,sticky=W)
self.plot3dname=Entry(self)
self.plot3dname.grid(row=4,column=1,sticky=W)
self.instruction=Label(self, text="Enter number of solution and grid files")
self.instruction.grid(row=5,column=0,columnspan=2,sticky=W)
self.numfiles=Entry(self)
self.numfiles.grid(row=6,column=1,sticky=W)
self.instruction=Label(self, text="Enter time step interval")
self.instruction.grid(row=7,column=0,columnspan=2,sticky=W)
self.numtimestep=Entry(self)
self.numtimestep.grid(row=8,column=1,sticky=W)
self.instruction=Label(self, text="Enter first time step")
self.instruction.grid(row=9,column=0,columnspan=2,sticky=W)
self.firsttimestep=Entry(self)
self.firsttimestep.grid(row=10,column=1,sticky=W)
self.save_button=Button(root, text="Save input", command=self.save)
self.save_button.grid(row=11,column=0,sticky=W)
self.quit_button=Button(root, text="Quit", command=quit)
self.quit_button.grid(row=12,column=0,sticky=W)
def save(self):
pathvalue =self.path.get()
plot3dname =self.plot3dname.get()
numfiles =int(self.numfiles.get())
stepinterval =int(self.numtimestep.get())
firsttimestep=int(self.firsttimestep.get())
print(pathvalue)
print(plot3dname)
print(numfiles)
print(stepinterval)
print(firsttimestep)
# create root file name
RootGridName=pathvalue + '.'+ plot3dname
for x in range(firsttimestep,laststep,stepinterval):
s="{:06d}".format(x)
# Filename rooth.num ex: '/usr/bin/p3d.010000'
FileName = RootGridName + s
print(FileName)
def quit():
root.destroy()
root =Tk()
root.title("Path")
root.geometry("400x400")
app=Application(root)
root.mainloop()
编译时出现错误:
for x in range(firsttimestep,laststep,stepinterval):
NameError: name 'firsttimestep' is not defined
调试的第一步是假设错误消息告诉您的是字面上的真相。在这种情况下,错误消息准确地告诉您出了什么问题。
错误是说 laststep
未定义(即使您在问题中声称错误引用了不同的变量)。扫描你的代码,我看不到你定义它的地方。您必须在使用变量之前定义它。
我今天才开始学习Python,因为我需要在 PARAVIEW 中创建一个宏。 我有几个名为 namefile.timestep 的网格文件(例如:p3d.030000) 我想用宏打开这个 PLOT3D 文件,拍一张网格照片,然后用这些照片制作电影。
打开这些文件我首先需要知道的是它们的名称(包括路径 ex:home/enrico/desktop/p3d.030000)。 我想要一个打开 GUI 的宏,我在其中插入文件夹路径、文件的根名称(例如:p3d)和时间步长(我给出第一个时间步长、间隔和文件数)。使用这些数据,我可以创建完整的路径。然后我将一次打开它们一个来创建一个 snapchat 并将此图保存在文件 .png 中。 然后用这张照片我会制作一部电影(仍然要弄清楚如何) 我坚持构建完整的文件夹路径。代码告诉我变量 firsttimestep 没有在 for 循环中定义。
我不知道我做错了什么。可能是一个简单的问题,但我是初学者。 感谢您的帮助
#simple GUI
from Tkinter import *
class Application(Frame):
def __init__(self,master):
"Initialize the Frame"
Frame.__init__(self,master)
self.grid()
inp=self.create_widgets()
def create_widgets(self):
self.instruction=Label(self, text="Enter the folder PATH")
self.instruction.grid(row=0,column=0,columnspan=2,sticky=W)
self.path=Entry(self)
self.path.grid(row=1,column=1,sticky=W)
self.instruction=Label(self, text="Enter the PLOT3D file name")
self.instruction.grid(row=3,column=0,columnspan=2,sticky=W)
self.plot3dname=Entry(self)
self.plot3dname.grid(row=4,column=1,sticky=W)
self.instruction=Label(self, text="Enter number of solution and grid files")
self.instruction.grid(row=5,column=0,columnspan=2,sticky=W)
self.numfiles=Entry(self)
self.numfiles.grid(row=6,column=1,sticky=W)
self.instruction=Label(self, text="Enter time step interval")
self.instruction.grid(row=7,column=0,columnspan=2,sticky=W)
self.numtimestep=Entry(self)
self.numtimestep.grid(row=8,column=1,sticky=W)
self.instruction=Label(self, text="Enter first time step")
self.instruction.grid(row=9,column=0,columnspan=2,sticky=W)
self.firsttimestep=Entry(self)
self.firsttimestep.grid(row=10,column=1,sticky=W)
self.save_button=Button(root, text="Save input", command=self.save)
self.save_button.grid(row=11,column=0,sticky=W)
self.quit_button=Button(root, text="Quit", command=quit)
self.quit_button.grid(row=12,column=0,sticky=W)
def save(self):
pathvalue =self.path.get()
plot3dname =self.plot3dname.get()
numfiles =int(self.numfiles.get())
stepinterval =int(self.numtimestep.get())
firsttimestep=int(self.firsttimestep.get())
print(pathvalue)
print(plot3dname)
print(numfiles)
print(stepinterval)
print(firsttimestep)
# create root file name
RootGridName=pathvalue + '.'+ plot3dname
for x in range(firsttimestep,laststep,stepinterval):
s="{:06d}".format(x)
# Filename rooth.num ex: '/usr/bin/p3d.010000'
FileName = RootGridName + s
print(FileName)
def quit():
root.destroy()
root =Tk()
root.title("Path")
root.geometry("400x400")
app=Application(root)
root.mainloop()
编译时出现错误:
for x in range(firsttimestep,laststep,stepinterval):
NameError: name 'firsttimestep' is not defined
调试的第一步是假设错误消息告诉您的是字面上的真相。在这种情况下,错误消息准确地告诉您出了什么问题。
错误是说 laststep
未定义(即使您在问题中声称错误引用了不同的变量)。扫描你的代码,我看不到你定义它的地方。您必须在使用变量之前定义它。