【发布时间】:2022-10-24 01:26:46
【问题描述】:
嘿家伙试图在这里为一个愚蠢的小项目创建一个多页应用程序,但是每当我使用 root.destroy 然后导入方法时,它会说大约 3 次点击,然后程序就关闭了。这是一个示例项目,其代码与我在 acc 项目中导航时使用的代码相同
主文件
import tkinter as tk
root = tk.Tk()
def move():
root.destroy()
import page2
canvas = tk.Canvas(root, height=400, width=400, bg="white")
canvas.pack()
frame = tk.Frame(root, bg="white")
frame.place(relwidth=0.8, relheight=0.8, relx=0.1, rely=0.1)
button1 = tk.Button(root, text="Press me", command=move)
button1.pack()
root.mainloop()
page2.py
import tkinter as tk
root = tk.Tk()
def move():
root.destroy()
import main
canvas = tk.Canvas(root, height=400, width=400, bg="white")
canvas.pack()
frame = tk.Frame(root, bg="white")
frame.place(relwidth=0.8, relheight=0.8, relx=0.1, rely=0.1)
button1 = tk.Button(root, text="Press me on 2", command=move)
button1.pack()
root.mainloop()
【问题讨论】:
-
虽然
import确实在它导入的模块中运行代码,但每次使用同一个模块时都这样做会有点糟糕,因为你知道,这不会特别有效,想想庞大的库。所以从这里你应该明白,当你第二次import时,它不再运行代码,它只是引用之前已经导入的模块,基本上你不应该使用import来运行类似的代码this,使用函数和/或类来制作可重用的代码 -
您的问题的解决方法可以将整个页面放入一个函数中。所以只需将所有内容放在一个函数中并称之为“运行”。然后把page_2的import一直放在最开始,但不在“run”函数中。您对 page_2 执行相同操作,并且每当您想运行其中一个代码时,只需执行 main.run() 或 page_2.run,这样您就不必再次导入代码,而只需运行它即可。我将在答案中提供一些代码
标签: python user-interface tkinter frame root