在Python TKinter中创建弹出窗口时禁用基础窗口

Dan*_*ats 18 python tkinter

我有一个主框架(称之为a),还有一个弹出式Toplevel(称之为b).如何确保用户在"活着" a时无法点击任何内容b

Jun*_*uxx 30

如果您不想隐藏根但只是确保用户只能与弹出窗口进行交互,则可以使用grab_set()grab_release().

b.grab_set() # when you show the popup
# do stuff ...
b.grab_release() # to return to normal
Run Code Online (Sandbox Code Playgroud)

或者,你可以withdraw()让root使它不可见:

a.withdraw()
Run Code Online (Sandbox Code Playgroud)

将使根保持活力,但只有b可见.

如果你需要它,你可以做到

a.deiconify()
Run Code Online (Sandbox Code Playgroud)

  • 在大多数情况下,不需要`grab_release()`。如果在窗口上使用了 `grab_set()`,则在窗口关闭时会自动释放控制权。 (4认同)
  • 第一个(`grab_set()`)仍在最新的 tkinter 和 Python 3.7.9 上工作吗?这些功能没有效果。 (4认同)
  • 只是为了增加您的答案,我在这里找到了相关文档(经过一番挖掘):http://effbot.org/tkinterbook/tkinter-dialog-windows.htm (3认同)