gpt4 book ai didi

python - 按下按钮 tkinter Python 后打开一个新窗口

转载 作者:行者123 更新时间:2023-12-02 16:56:31 25 4
gpt4 key购买 nike

我想创建一个按钮,在按下时打开一个新的 tkinter 窗口。我已经在另一篇文章中找到了解决方案,但在这个例子中,我想在打开新窗口时停用按钮。这是我所拥有的(测试代码):

import Tkinter as tk

def create_window():
window = tk.Toplevel(root)

root = tk.Tk()
b = tk.Button(root, text="Create new window", command=create_window)
b.pack()

root.mainloop()

所以我想在新窗口仍然打开时停用按钮 b

谢谢。

最佳答案

首先想到的有几种不同的方法。

一种方法是禁用与整个窗口的交互,这可以通过在新创建的窗口上使用 .grab_set() 方法来完成。

def create_window():
window = tk.Toplevel(root)
window.grab_set()

这个方法意味着创建的窗口现在被聚焦,当聚焦的窗口被销毁时,您将再次能够与其他窗口交互。

另一种方法是让您的函数 create_window() 将按钮作为输入,然后在按钮上使用 .configure(state="disabled")

def create_window(button):
window = tk.Toplevel(root)
button.configure(state="disabled")

root = tk.Tk()
b = tk.Button(root, text="Create new window", command=lambda: create_window(b))
b.pack()

请注意,由于您的函数现在需要输入,因此您需要使用 command= lambda:create_window(b) 这样 create_window() 就不会运行创建按钮时。

但是现在您必须编写另一个函数,在新窗口被销毁时将按钮状态更改回 .configure(state="normal")。例如

def create_window(button):
window = tk.Toplevel(root)

def on_close():
button.configure(state="normal")
window.destroy()

button.configure(state="disabled")

window.protocol("WM_DELETE_WINDOW", on_close)

关于python - 按下按钮 tkinter Python 后打开一个新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56170943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com