我想要做的是避免打开相同的窗口(如果它已经打开)。 所以,我有一个窗口和一个按钮,以及一个打开另一个窗口的按钮,我想再次单击该按钮,如果第二个窗口已经打开,请将焦点更改为第二个窗口,或者如果它是&#39 ;不开放,打开它。
我尝试使用secondwindow.winfo_exists()
,但由于启动第二个窗口的按钮的功能超出了第二个窗口的功能,它返回我的第二个窗口未定义。
除此之外,我添加了第二个按钮来检查是否创建了第二个窗口,而不是再次检查是否再次调用相同的函数。
有什么办法吗?这是我使用的代码的一部分:
def startwind1():
wind1 = tk.Tk()
wind1.title('Window 1')
w1button1 = ttk.Button(wind1,text='Launch Window 2',command=startwind2).pack()
w1button2 = ttk.Button(wind1,text='Check if Window 2 exists',command=checkwind2).pack()
wind1.mainloop()
def startwind2():
wind2 = tk.Toplevel()
wind2.title('Window 2')
def checkwind2():
if wind2.winfo_exists() == 1:
print('Window 2 exists')
else:
print('Window 2 not exists )
希望你能帮助我!
答案 0 :(得分:1)
在startwind2
内,你必须使用global wind2
将窗口分配给全局变量,然后它将在其他函数中可用。
还需要创建wind2 = None
,因此即使在创建窗口之前,变量也可用。
import tkinter as tk
from tkinter import ttk
wind2 = None
def startwind1():
#global wind2
#wind2 = None
wind1 = tk.Tk()
wind1.title('Window 1')
w1button1 = ttk.Button(wind1,text='Launch Window 2', command=startwind2)
w1button1.pack()
w1button2 = ttk.Button(wind1,text='Check if Window 2 exists',command=checkwind2)
w1button2.pack()
wind1.mainloop()
def startwind2():
global wind2
wind2 = tk.Toplevel()
wind2.title('Window 2')
def checkwind2():
if (wind2 is not None) and wind2.winfo_exists():
print('Window 2 exists')
else:
print('Window 2 not exists')
startwind1()
答案 1 :(得分:0)
您也可以使用 if 语句执行此操作。这是一种不同的方法,但效果很好,而且非常简单。
[
{
"operation": "shift",
"spec": {
"*": "&",
"events": {
"*": {
"*": {
"@id": {
"e0": { "@(2,value)": "&" },
"e4": { "@(2,value)": "&" }
}
}
}
},
"ids": {
"*": {
"@value": "@id"
}
}
}
}
]