【问题标题】:Unable to reimport py file after several time looped多次循环后无法重新导入py文件
【发布时间】:2021-09-27 16:51:59
【问题描述】:

我无法循环代码,这是我的代码,我希望让我的代码能够在按下按钮时加载另一个 py 模块,但是当我第二次循环时,即使缓存没有写入,它也会结束。

这是我使用的两个 .py 文件:

#test.py
import tkinter
import sys
sys.dont_write_bytecode = True
top = tkinter.Tk()
def next():
    top.destroy()
    import test2
B = tkinter.Button(top, text ="Hello", command = next)
B.pack()
top.mainloop()
#test2.py
import tkinter
import sys
sys.dont_write_bytecode = True

top = tkinter.Tk()

def next1():
    top.destroy()
    import test

B = tkinter.Button(top, text ="Hello", command = next1)

B.pack()
top.mainloop()

【问题讨论】:

  • import test只导入一次test 模块,相同语句的后续调用不会再次导入test 模块。同样适用于import test2
  • 您好,感谢您的澄清,请问有没有其他方法可以得到我想要的结果?

标签: python loops tkinter import destroy


【解决方案1】:

import test 只会导入test 模块一次,相同语句的后续调用不会再次导入test 模块。同样适用于import test2

您需要将所需的代码放入函数中,然后导入该函数并执行它:

test.py

import sys

sys.dont_write_bytecode = True

def main():
    import tkinter
    from test2 import main2

    def next():
       top.destroy()
       main2()

    top = tkinter.Tk()
    B = tkinter.Button(top, text="Hello", command=next)
    B.pack()
    top.mainloop()

if __name__ == "__main__":
    main()

test2.py

import sys

sys.dont_write_bytecode = True

def main2():
    import tkinter
    from test import main

    def next1():
       top.destroy()
       main()

    top = tkinter.Tk()
    B = tkinter.Button(top, text="Hello 2", command=next1)
    B.pack()
    top.mainloop()

if __name__ == "__main__":
    main2()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2014-06-11
    • 2016-06-30
    • 1970-01-01
    • 2021-03-13
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多