首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每次打开一个新的窗口,我如何关闭旧窗口?

每次打开一个新的窗口,我如何关闭旧窗口?
EN

Stack Overflow用户
提问于 2022-02-14 04:21:23
回答 2查看 51关注 0票数 2

下面有一个简化的代码,由两个单独的屏幕组成。我怎样才能在打开一个屏幕时,关闭旧屏幕呢?

虽然在本例中我没有多个屏幕,但我希望能够对依赖于GUI设计的6-9个屏幕做到这一点。

如果能在这个问题上提供任何帮助,我们将不胜感激。

代码语言:javascript
复制
from tkinter import *
import os
import time
from tkinter import simpledialog

def login():
    global screen2
    screen2 = Toplevel(screen)
    screen2.title("Login")
    screen2.geometry("530x290")
    Label(screen2, text = "please enter details below to login").pack()
    Label(screen2, text = "").pack()
   
    calibration1 = StringVar()
    calibration2 = StringVar()
    calibration3 = StringVar()
   
    global calibration1_entry
    global calibration2_entry
    global calibration3_entry
   
    calibration1_entry= Entry(screen2, textvariable = calibration1).place(x=350, y=70)
    calibration2_entry = Entry(screen2, textvariable = calibration2).place(x=350, y=120)
    calibration3_entry = Entry(screen2, textvariable = calibration3).place(x=350, y=170)

def main_screen():
    global screen
    screen = Tk()
    screen.geometry("530x290")
    screen.title("Remote Monitoring Site 1")
    Label(text = "Remote Monitoring Site 1", bg = "grey", width = "300", height = "2", font = ("Calibri", 13)).pack()
    Label(text = "").pack()
    Button(text = "Login", width = "30", height = "2", command = login).pack()
    Label(text = "").pack()
   
    screen.mainloop()

main_screen()
EN

回答 2

Stack Overflow用户

发布于 2022-02-14 05:41:46

您可以在开始时将screen2指定为None,如果它不是None,则确保销毁并重新打开它

代码语言:javascript
复制
def login():
    global screen2

    if screen2 is None: # if screen2 is not Toplevel
        screen2 = Toplevel(screen)
    else:
        screen2.destroy() # destroy and start new screen
        screen2 = Toplevel(screen)
    ...
    ...

def main_screen():
    global screen2,screen

    screen = Tk()
    screen2 = None # Assign to None at the beginning
    ...
    ...

这还将确保没有两个Toplevel同时打开。

票数 2
EN

Stack Overflow用户

发布于 2022-02-14 08:24:25

您可以制作多个脚本,例如在一个脚本中编写登录屏幕代码,在另一个脚本中编写主菜单,然后使用import os关闭和打开脚本。函数将类似于:

代码语言:javascript
复制
def login():
    if username == "admin" and password == "admin":
        file = 'python3 main_menu.py' # or you can do it
        root.destroy()                # proper way with db
        os.system(file)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71107132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档