我在Tkinter中有一个循环:
def main():
#Global Variables
windows = []
buttons = []
labels = []
messageboxes = []
global theme
theme = 0
listboxes = []
global register
register = []
global path
path = ""
# Lotsa' Code
Tkinter.mainloop()
if __name__ == "__main__":
main()
def save_f():
global register
outFile = open('FobbySave.txt', 'wb')
pickle.dump(register, outFile)
outFile.close()
global register
#At Quit
atexit.register(save_f)atexit失败。但是当我尝试打印注册表时,它没有问题。当我把save_f放到Tkinter循环中时,它可以工作,但是在atexit中没有,所以谁能告诉我我做错了什么?
附注:
对不起,第一次忘了写出口。但它在我的代码里。
编辑:这里有原始代码
import pickle
import atexit
def save_f():
global register
outFile = open('Something.txt', 'wb')
pickle.dump(register, outFile)
outFile.close()
atexit.register(save_f)发布于 2013-03-12 01:59:43
好吧,问题是我需要的是atexit.register(save_f)而不是atexit.register(save_f())。
你不应该进行函数调用!
发布于 2013-03-11 02:15:11
只要我使用import atexit并将register设置为某个值,您的基本脚本就可以为我工作。例如:
import pickle
import atexit
def save_f():
outFile = open('Something.txt', 'wb')
pickle.dump(register, outFile)
outFile.close()
register = 1
atexit.register(save_f)(请注意,global也不是必需的)。在这种情况下,您应该确保在当前目录或PYTHONPATH上的其他位置没有另一个名为atexit.py的文件……
发布于 2013-03-11 02:16:10
看看你的代码,我建议你试试这个:
def main():
# ... everything in main ...
Tkinter.mainloop()
def save_f():
outFile = open('FobbySave.txt', 'wb')
pickle.dump(register, outFile)
outFile.close()
#At Quit
atexit.register(save_f)
if __name__ == "__main__":
main()问题可能是在运行main方法之后初始化atexit。因此,在代码终止(并停止执行)之后,您可以尝试添加atexit方法。
https://stackoverflow.com/questions/15325733
复制相似问题