用户界面- Python GUI,保存计算输出



我正在做一个应用程序,做一些电子计算。我们提供输入,所有的计算都在一个叫做EarthCalc(Frame)的类中完成,我把这个类命名为:

root = Tk()
C = EarthCalc(root)

现在,从那个类中,我试图将一些计算的输出保存到字典中[在类外定义],以便我可以将输出保存在记事本中。但这行不通!

我已经保存了输入数据,但输出数据是空白的:

def save_data():
    fileName = tkFileDialog.asksaveasfilename(initialfile='Untitled.txt',defaultextension=".txt",filetypes=[("All Files","*.*"),("Text Documents","*.txt")])
    try:
        file = open(fileName, 'w')
        mydata = {"Conductor Material" : C.conductor_material.get(), "Soil Resistivity" : C.a.get(), "Earth Fault Current" : C.b.get(), "Fault Clearance Time" : C.c.get(), "Electrode Type" : "Pipe", "Electrode Length" : C.d.get(), "Diameter of Pipe" : C.e.get(), "Initial Temperature" : C.f.get(), "Conductor Strip Length" : C.g.get(), "Conductor Strip Width" : C.h.get(), "Conductor Strip Thickness" : C.i.get(), "Earth Grid Burial Depth" : C.j.get(), "Current Division Factor" : C.sf.get(), "Decrement Factor" : C.df.get(), "Surface Layer Resistivity" : C.slr.get(), "Surface Layer Thickness" : C.slt.get(), "Weight Category" : C.weight_category.get()}
        myop = {"Number of Pits" : C.pits}
        #myop = {"Number of Pits" : C.pits, "Protective Conductor Cross Section" : C.cross_section, "Earth Grid Resistance" : C.grid_resistance, "Maximum Grid Current" : C.maximum_grid_current, "Surface Layer Derating Factor" : C.sldf, "Touch Potential Criteria" : C.tpc, "Step Potential Criteria" : C.spc, "Ground Potential Rise" : C.gpr, "Grid Area" : C.area1}
        #textoutput = "Input Data nConductor Material: %s nSoil Resistivity: %s nEarth Fault Time: %s nFault Clearance Time: %s nLength of Pipe: %s nDiameter of Pipe: %s nInitial Temperature: %s nConductor Strip Length: %s nConductor Strip Width: %s nConductor Strip Thickness: %s nGrid Burial Depth: %s nCurrent Division Factor: %s nDecrement Factor: %s nSurface Layer Resistivity: %s nSurface Layer Height: %s nWeight Category: %s nnnOutput Data " %self.conductor_material.get(), %self.a.get(), %self.b.grt(), %self.c.get(), %self.d.get(), %self.e.get(), %self.f.get(), %self.g.get(), %self.h.get(), %self.i.get(), %self.j.get(), %self.sf.get(), %self.df.get(), %self.slr.get(), %self.slt.get(), %self.weight_category.get()
        file.write("Input Datann")
        for line in mydata:
            file.write(line + ": " + mydata[line] + "n")
        file.write("nnOutput Data nn")
        file.write(myop["Number of Pits"])
        #for item in myop:
            #file.write(myop[item])

帮我解决这个问题。请

您的代码有几个潜在的问题。如果您正在使用Python 2。您应该避免使用变量名"file",因为它也是一个预定义的类,它在这个简短的代码片段中可以工作,但在其他情况下可能会给您带来奇怪的错误。名称文件在Python3中没有问题。

这是一个有点问题,你不显示什么是在你的except块,因为崩溃(例如,如果坑的数量是一个数字)。write将返回TypeError),这反过来可能导致程序在数据被实际刷新到磁盘之前崩溃。

我可能会这样写:

def save_data():
   fileName = tkFileDialog.asksaveasfilename(initialfile='Untitled.txt',defaultex»tension=".txt",filetypes=[("All Files","*.*"),("Text Documents","*.txt")])
   try:
      with open(fileName,'w') as f:
         mydata = {"Conductor Material" :...
         myop = {"Number of Pits" : C.pits}
         f.write("Input Datann")
         for line,value in mydata.iteritems():
            f.write("{0} : {1}n".format(line, value ))
         f.write("nnOutput Data nn")
         f.write(str(myop["Number of Pits"]))
   except IOError as e:
      print "Error opening or writing {0}: {1}".format(fileName,e.message)

最新更新