import tkinter as tk
from tkinter import ttk
class App(tk.Tk):
def __init__(self):
super().__init__()
self.open_button = ttk.Button(
self,
text='Open 2nd Window',
command=self.modal
)
self.open_button.pack()
def modal(self):
self.window = tk.Toplevel(self) # create new window
# bind a handler for when the user closes this window
self.window.protocol('WM_DELETE_WINDOW', self.on_close)
# disable interaction with the main (root) window
self.attributes('-disabled', True)
self.close_button = ttk.Button(
self.window,
text='Close Modal',
command=self.on_close
)
self.close_button.pack()
def on_close(self):
# re-enable interaction the root window
self.attributes('-disabled', False)
# close the modal window
self.window.destroy()
if __name__ == '__main__':
app = App()
app.mailoop() # run the app
2条答案
按热度按时间uxhixvfz1#
这是一个示例应用程序,当用户单击主窗口上的按钮时,它会打开第二个窗口,并且在第二个窗口关闭之前禁止与主窗口的交互。
为了简洁起见,我们省略了一些配置,这里不使用CTk,因为我不知道您是如何在特定应用程序中实现它的--不过,修改这个示例以使用CTk应该很容易。
今后:
1.提供代码,表明您已真诚地努力自行解决问题
1.不要在数小时内多次发布同一个问题-如果需要更改,请编辑原始问题
xurqigkl2#
如果你想在回到原来的窗口之前打开另一个窗口做一些事情,你应该考虑使用消息框。下面是一个介绍消息框类型的链接:https://docs.python.org/3/library/tkinter.messagebox.html.