我使用tkinter编写了一个名为root的gui,root上创建了一个名为top的toplevel。并使用root.attributes('-disabled', True)代码,将程序设置为开启top后将root锁定,但是当root锁定后,我使用root.state()方法获取root状态,依旧显示为normal,我要怎么样才能正确获取root的状态
时间: 2024-01-21 14:19:48 浏览: 112
在使用`root.attributes('-disabled', True)`方法时,将禁用根窗口,并将其状态更改为`'disabled'`,而不是更改其状态为`'normal'`。因此,即使窗口被禁用,它的状态仍然是`'normal'`。要检查窗口是否被禁用,您可以使用`root.attributes('-disabled')`方法。如果返回值为1,表示窗口已被禁用,否则返回0。
以下是一个示例代码:
```python
import tkinter as tk
def lock_root():
root.attributes('-disabled', True)
top = tk.Toplevel(root)
top.title('Locked')
top.geometry('200x100')
top.resizable(False, False)
tk.Label(top, text='Root is locked').pack(pady=20)
root = tk.Tk()
root.title('Root')
root.geometry('400x300')
root.resizable(False, False)
tk.Button(root, text='Lock root', command=lock_root).pack(pady=20)
print(root.attributes('-disabled')) # 输出0
root.mainloop()
```
当单击“锁定根”按钮时,程序将禁用根窗口并打开一个新的顶级窗口。在控制台上输出`root.attributes('-disabled')`的值,将返回0,表示窗口未被禁用。
阅读全文