tkinter做下拉菜单并将每个事件定义一个函数
时间: 2023-07-31 17:09:30 浏览: 135
好的,下面是一个简单的例子,实现了一个下拉菜单,每个选项对应一个函数:
```python
import tkinter as tk
def func1():
print("选项一被选中")
def func2():
print("选项二被选中")
def func3():
print("选项三被选中")
root = tk.Tk()
# 创建菜单
menu = tk.Menu(root)
# 创建下拉菜单
submenu = tk.Menu(menu, tearoff=0)
submenu.add_command(label="选项一", command=func1)
submenu.add_command(label="选项二", command=func2)
submenu.add_command(label="选项三", command=func3)
# 添加下拉菜单到菜单栏
menu.add_cascade(label="下拉菜单", menu=submenu)
# 显示菜单栏
root.config(menu=menu)
root.mainloop()
```
运行代码,可以看到一个窗口,其中有一个名为“下拉菜单”的菜单,点击后会显示三个选项。当选中一个选项时,对应的函数会被调用,并输出相应的信息。
相关问题
tkinter设置下拉菜单,每个选项都绑定一个函数,代码怎么写
你可以使用 `command` 参数来绑定每个选项的函数。每个选项对应的函数可以通过 `lambda` 表达式来定义。
下面是一个示例代码,可以将每个选项与不同的函数绑定:
```python
import tkinter as tk
root = tk.Tk()
# 定义一个变量,用于存储当前选中的选项
selected_option = tk.StringVar()
# 设置默认选项
selected_option.set('Option 1')
# 定义选项列表
options = ['Option 1', 'Option 2', 'Option 3']
# 定义选项对应的函数
def option1_func():
print('Option 1 Selected')
def option2_func():
print('Option 2 Selected')
def option3_func():
print('Option 3 Selected')
# 创建下拉菜单
option_menu = tk.OptionMenu(root, selected_option, *options, command=lambda option: globals()[option.lower()+'_func']())
option_menu.pack()
root.mainloop()
```
在上面的代码中,我们首先创建了一个 `Tk` 实例。然后,我们定义了一个 `StringVar` 变量 `selected_option`,用于存储当前选中的选项。接着,我们设置了默认选项为 `'Option 1'`。
然后,我们定义了一个选项列表 `options`,其中包含了三个选项。接着,我们定义了三个选项对应的函数 `option1_func`、`option2_func` 和 `option3_func`。
接着,我们使用 `OptionMenu` 创建了一个下拉菜单,并使用 `command` 参数将每个选项与对应的函数绑定。在这里,我们使用了 `lambda` 表达式来调用选项对应的函数。
最后,我们使用 `mainloop` 方法来启动主事件循环,以保持窗口显示。
在tkinter界面中的指定位置创建一个下拉菜单,菜单中的每一个事件都绑定一个函数代码
要在tkinter界面中的指定位置创建一个下拉菜单并绑定事件函数,可以按照以下步骤进行:
1. 创建根窗口和菜单栏,并将菜单栏添加到根窗口中。
```python
import tkinter as tk
root = tk.Tk()
# 创建菜单栏
menu_bar = tk.Menu(root)
root.config(menu=menu_bar)
```
2. 创建下拉菜单,并将每个菜单项绑定到对应的事件函数。
```python
# 创建下拉菜单
file_menu = tk.Menu(menu_bar, tearoff=False)
# 添加菜单项并绑定事件函数
file_menu.add_command(label="打开", command=open_file)
file_menu.add_command(label="保存", command=save_file)
file_menu.add_command(label="退出", command=root.quit)
# 将下拉菜单添加到菜单栏中
menu_bar.add_cascade(label="文件", menu=file_menu)
```
在上面的代码中,我们创建了一个名为`file_menu`的下拉菜单,并将`tearoff`设置为`False`,以禁止将下拉菜单从菜单栏中拖出来(该功能在默认情况下是启用的)。
然后,我们使用`add_command()`方法将每个菜单项添加到下拉菜单中,并将其绑定到对应的事件函数(例如`open_file()`、`save_file()`和`root.quit()`)。最后,我们使用`add_cascade()`方法将下拉菜单添加到菜单栏中。
3. 指定菜单的显示位置。
```python
# 将菜单显示在指定位置
file_menu.post(100, 100)
```
在上面的代码中,我们使用`post()`方法将下拉菜单显示在指定位置(例如,横坐标为100,纵坐标为100的位置)。这里的位置是相对于屏幕的绝对坐标。如果要将菜单显示在指定的控件上,则可以使用该控件的`winfo_rootx()`和`winfo_rooty()`方法获取该控件在屏幕上的绝对坐标,然后将其作为参数传递给`post()`方法。
完整的代码示例:
```python
import tkinter as tk
def open_file():
print("打开文件")
def save_file():
print("保存文件")
# 创建根窗口和菜单栏
root = tk.Tk()
menu_bar = tk.Menu(root)
root.config(menu=menu_bar)
# 创建下拉菜单并绑定事件函数
file_menu = tk.Menu(menu_bar, tearoff=False)
file_menu.add_command(label="打开", command=open_file)
file_menu.add_command(label="保存", command=save_file)
file_menu.add_command(label="退出", command=root.quit)
menu_bar.add_cascade(label="文件", menu=file_menu)
# 将菜单显示在指定位置
file_menu.post(100, 100)
# 进入消息循环
root.mainloop()
```