【问题标题】:Open file and save it in another function with tkinter使用 tkinter 打开文件并将其保存在另一个函数中
【发布时间】:2015-09-02 20:47:10
【问题描述】:

我正在创建一个 python Tk 程序,发现保存文件很烦人。我有一个打开按钮和一个保存按钮。比如我打电话

file = tkFileDialog.askopenfile(mode='rb',title='Select a file')

从这个函数

def open_command(self):

在另一个函数中

def save_file(self):

我想保存文件。要以相同的名称保存文件,我必须调用

file = tkFileDialog.asksaveasfile(mode='w')

再次打开另一个窗口,然后它会要求您命名文件,最后会提示您是否要覆盖文件。有没有办法在没有任何窗口的情况下保存文件?是否可以在一个函数中不关闭文件然后写入文件并将其保存在另一个函数中?

【问题讨论】:

  • 您的意思是静默保存/覆盖吗?

标签: python function file tkinter


【解决方案1】:

听起来您想要静默保存/覆盖,以便用户可以打开文件、修改文件,然后点击保存以更新保存的文件。我建议询问文件name,因为askopenfile 询问名称,然后立即为您提供该名称的文件对象。

self.save_name = tkFileDialog.askopenfilename(title='Select a file')
with open(self.save_name, 'rb') as f:
    self.the_data = f.read() # insert processing here

如果您只要求名称,您可以保存该名称,然后在您的保存函数中直接使用它:

with open(self.save_name, 'wb') as output:
    output.write(self.the_data) # insert processing here

【讨论】:

  • 这有帮助,但我可以只打开一个文件一次,然后在进行一些更改后保存它,而不必选择文件并打开另一个窗口。(只需点击“保存”即可)
  • 您是否正确保存了对您在open_command 中获得的文件名的引用? save_file 函数应该只是引用该保存的名称。它应该能够根据需要多次这样做。该引用是否在某处被删除?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 2016-04-17
  • 2010-09-14
  • 1970-01-01
  • 2014-02-18
相关资源
最近更新 更多