变量未在范围内定义

时间:2015-10-02 08:01:35

标签: python macros

我今天刚开始学习Python,因为我需要在PARAVIEW中创建一个宏。 我有几个网格文件,名称是namefile.timestep(例如:p3d.030000) 我想用宏打开这个PLOT3D文件,拍摄网格图片,然后用这些图片制作一部电影。

打开这些文件我需要知道的第一件事是他们的名字(包括路径ex:home / enrico / desktop / p3d.030000)。 我想要一个打开GUI的宏,我在其中插入文件夹路径,文件的根名称(例如:p3d)和时间步长(我给出第一个时间步,间隔和文件数)。 Whit这些数据我可以创建完整的路径。然后我将打开它们,创建一个Snapchat并将此图保存在.png文件中。 然后用这张照片我会创作一部电影(还是想弄清楚怎么样) 我坚持完整的文件夹路径的构造。代码告诉我,在for循环中没有定义变量firsttimestep。

我不知道我做错了什么。可能是一个简单的问题,但我是初学者。 谢谢你的帮助

#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

1 个答案:

答案 0 :(得分:0)

调试的第一步是假设错误消息告诉你字面意义。在这种情况下,错误消息正在告诉您究竟是什么错误。

错误是说laststep未定义(即使您在问题中声明错误引用了不同的变量)。扫描你的代码,我看不到你定义它的地方。您必须在使用之前定义变量。