2015-03-30 53 views
0

好的,所以我正在开发一个DnD应用程序,并且我想使用filedialog.asksaveasfile()命令保存字符表。python中的asksaveasfile对话框

下面的代码:

def save(self): 
    file_=filedialog.asksaveasfile(parent=self, mode="w",title=\ 
"Save your Character Sheet",defaultextension=".dndcs",filetypes=[("Character Sheets", ".dndcs"), ("All Files", ".*")]) 
    #file_= open(str(saveName),"w") 
    string="" 
    list_vars=[self.player,self.character, self.dm,self.str,self.int,self.wis,self.dex,self.con,self.cha,self.JPpoison,\ 
       self.JPwands,self.JPparalysis,self.JPbreath,self.JPspell,self.class_,self.race,self.align,self.AC,self.HP,self.maxHP,self.XPtotal] 
    for i in range(len(list_vars)): 
     string=str(list_vars[i].get())+"\n" 
     print(string) 
    file_.write(string) 
    file_.close() 

它不返回任何类型的异常,但是当我尝试打开该文件,使用编辑器,我看到的是第一线0。

出了什么问题?

回答

3

因此经过多次尝试解决这个问题后,我注意到我犯了一个小错误。 事实上,这不是:U

string=str(list_vars[i].get())+"\n" 

但是:

string+=str(list_vars[i].get())+"\n" 

除此之外,此代码的工作,随时随意使用它。

+0

您可能也可以在asksaveasfile中使用'mode =“a”',将您写入的所有内容附加到文件末尾。你应该把'file_.write(string)'移到for循环中。 – fhdrsdg 2015-03-30 21:45:25

+0

好。找到解决方案的好工作。自我回答是堆栈溢出的最佳选择。 – Zizouz212 2015-03-31 02:39:25