2015-10-02 72 views
-1

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

我需要知道打开这些文件的第一件事是他们的名字(包括路径例如:home/enrico/desktop/p3d.030000)。 我想要一个打开GUI的宏,我在其中插入文件夹路径,文件的根名称(例如:p3d)和时间步骤(我给出第一个时间步,间隔和文件数)。把这些数据加上我可以创建完整的路径。然后,我将打开它们以创建一个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 
+0

您之前使用'self'来访问它。你为什么认为这次没有它可以逃脱? –

+4

你确定你正在得到那个错误吗?当我运行这个时,我得到的laststep没有被定义,不是'firsttimestep'。 –

+1

确实,laststep没有被定义在任何地方 –

回答

0

调试的第一步是承担错误消息告诉你千真万确的事实。在这种情况下,错误消息正在告诉你什么是错的。

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

+0

是的,这是事实。我没有定义laststep。现在它可以工作。谢谢!这是一个愚蠢的错误。 – user3618395