TK点击按钮后出现带下拉框的小窗口并且在小窗口未关闭的情况下点击按钮只出现一次小窗口,关闭小窗口后点击按钮后会再次出现
时间: 2023-08-02 16:11:41 浏览: 81
您可以使用Tkinter中的Toplevel小部件来实现您所需的带有下拉框的小窗口。当您点击按钮时,您可以创建一个新的Toplevel实例,并将下拉框放在其中。
为了确保只有一个小窗口被打开,您可以使用一个布尔变量来跟踪当前小窗口的状态。在按钮被点击时,您可以检查该变量的值,如果为True,则不会创建新的小窗口。当用户关闭小窗口时,您可以将该变量重置为False,以便用户再次打开小窗口。
以下是一个简单的示例代码,可以帮助您开始编写您的小窗口:
```
import tkinter as tk
class MyWindow:
def __init__(self, master):
self.master = master
self.is_window_open = False
# 创建主窗口中的按钮
self.button = tk.Button(master, text="打开小窗口", command=self.open_window)
self.button.pack()
def open_window(self):
# 如果小窗口已经打开,则不再创建新的小窗口
if self.is_window_open:
return
# 创建一个新的Toplevel实例
self.top = tk.Toplevel(self.master)
self.top.protocol("WM_DELETE_WINDOW", self.close_window)
# 创建下拉框并将其放在小窗口中
self.dropdown = tk.OptionMenu(self.top, tk.StringVar(), "选项1", "选项2", "选项3")
self.dropdown.pack()
# 更新窗口打开状态的变量
self.is_window_open = True
def close_window(self):
# 关闭小窗口并更新状态变量
self.top.destroy()
self.is_window_open = False
root = tk.Tk()
app = MyWindow(root)
root.mainloop()
```
在这个示例中,我们创建了一个名为`MyWindow`的类,它包含了一个带有下拉框的小窗口。在创建主窗口时,我们创建了一个按钮,并将其与打开小窗口的`open_window()`方法相关联。在该方法中,我们检查`is_window_open`变量的值,如果它为False,则创建一个新的Toplevel实例并将下拉框放在其中。我们还为小窗口设置了一个关闭事件处理程序,以便在用户关闭小窗口时更新`is_window_open`变量的值。
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)