python寫一個多級菜單欄中菜單中多個子菜單的gui窗口,每個子菜單在窗口顯示的内容和標簽和文本框都不一樣
时间: 2023-11-27 19:54:13 浏览: 64
多级菜单设计
4星 · 用户满意度95%
以下是一个简单的多级菜单的GUI窗口示例,其中每个子菜单都有自己的标签和文本框:
```python
import tkinter as tk
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title("Multi-level Menu Example")
self.geometry("400x300")
self.create_menu()
def create_menu(self):
self.menu = tk.Menu(self)
self.config(menu=self.menu)
# First level menu
file_menu = tk.Menu(self.menu)
self.menu.add_cascade(label="File", menu=file_menu)
# Second level menu
new_menu = tk.Menu(file_menu)
file_menu.add_cascade(label="New", menu=new_menu)
# Third level menu
new_menu.add_command(label="Text File", command=self.create_text_file_window)
new_menu.add_command(label="Image File", command=self.create_image_file_window)
def create_text_file_window(self):
text_file_window = tk.Toplevel(self)
text_file_window.title("Text File Window")
label = tk.Label(text_file_window, text="Enter file name:")
label.pack()
text_box = tk.Entry(text_file_window)
text_box.pack()
button = tk.Button(text_file_window, text="Create File", command=lambda: self.create_file(text_box.get()))
button.pack()
def create_image_file_window(self):
image_file_window = tk.Toplevel(self)
image_file_window.title("Image File Window")
label = tk.Label(image_file_window, text="Enter file name:")
label.pack()
text_box = tk.Entry(image_file_window)
text_box.pack()
button = tk.Button(image_file_window, text="Create File", command=lambda: self.create_file(text_box.get()))
button.pack()
def create_file(self, file_name):
# Do something with the file name
print(f"Creating file: {file_name}")
app = App()
app.mainloop()
```
在这个示例中,我们创建了一个`App`类,它继承了`tkinter.Tk`类并覆盖了`__init__`方法。在`__init__`方法中,我们创建了一个菜单栏并将其设置为窗口的菜单栏。
我们使用`add_cascade`方法在菜单栏中添加了第一级菜单“File”,并使用`Menu`类创建了第二级菜单“New”。然后,我们使用`add_command`方法在第三级菜单中添加了两个命令:“Text File”和“Image File”。
当用户选择“Text File”或“Image File”时,我们将调用`create_text_file_window`或`create_image_file_window`方法,这些方法将打开一个新的顶层窗口,并在其中包含一个标签、一个文本框和一个按钮。
当用户单击按钮时,将调用`create_file`方法,并将文本框中的文件名作为参数传递。在这个示例中,我们只是简单地打印文件名,但你可以在这里执行你自己的代码来创建文件或执行其他操作。
阅读全文