【问题标题】:root.destroy in tkinter for GUI用于 GUI 的 tkinter 中的 root.destroy
【发布时间】: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


【解决方案1】:

你的主要:

from tkinter import *
import page_2
def run():
    window = Tk()
    def switch_to_page_2():
        window.destroy()
        page_2.run()
    # Create a button or something to call the function to switch to page_2
    window.mainloop()

run()

您的 page_2:

from tkinter import *
import main

def run():
    # just run your code for your window here
    window_2 = Tk()
    def switch_to_main():
        window_2.destroy()
        main.run()
    # Also create a button to call the function here
    window_2.mainloop()

如果对此有任何问题,请告诉我。 有关更多信息,请参阅我在上面发布的评论...

【讨论】:

    猜你喜欢
    • 2022-12-20
    • 2015-05-25
    • 2023-03-09
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    相关资源
    最近更新 更多