如何在触发某个 if 语句时弹出 tkinter window?

How to make tkinter window pop-up when a certain if statement is triggered?

大家好,我正在尝试制作一个计时器应用程序,用于研究触发休息时间时弹出的窗口。我正在使用此代码来启动 window,但我面临的问题是如果我将 window 最小化,此代码将不再起作用并且应用程序不会弹出。我试图找到一种方法来从 window 中删除最小化按钮选项,但没有遇到任何问题。

def raise_above_all(window):
    window.attributes('-topmost', 1)
    window.attributes('-topmost', 0)

不要禁用 window 的最小化按钮。只需使用 window.state('zoomed')window.attributes('-topmost', True)。这样即使 window 被最小化,它仍然会被提升到最顶层。 另外,先定义 window 的 maxsize,这样 window 就不会因为 zoomed.

变成全屏

这是一个简单而完整的演示: (要提高 window“window2”,您需要在“window1”的输入框中输入 1)

from tkinter import *


window1 = Tk()
window1.geometry('1200x600')
window1.minsize(1200, 600)

def raise_above_all(window):
    window.state('zoomed')  #Needed in case the window2 is minimized
    window.attributes('-topmost', True)

def create_new_window2(window):
    window.maxsize(300, 300)    #define the maxsize so that the window2 does not get fullscreen when 'zoomed'
    window.mainloop()

def submit():
    if x.get()==1:
        raise_above_all(window2)
    else:
        print("Enter 1")
        
x = IntVar()
Entry(window1, textvariable=x).pack()
Button(window1, text="Enter", command=submit).pack()

window2 = Tk()
create_new_window2(window2)

window1.mainloop()

或者,您可以使用 window.overrideredirect(True)

删除整个 window 的标题栏

您可以使用 window.deiconify() 使其取消最小化,并使用您的代码使其置于最前面。像这样:

window.deiconify()
window.attributes('-topmost', 1)
window.attributes('-topmost', 0)