龙空技术网

Python GUI 编程:tkinter 初学者入门指南——菜单、菜单按钮选项

信息科技云课堂 865

前言:

今天朋友们对“java按钮的位置”都比较关怀,小伙伴们都需要知道一些“java按钮的位置”的相关知识。那么小编同时在网上收集了一些对于“java按钮的位置””的相关文章,希望同学们能喜欢,朋友们一起来了解一下吧!

目录:菜单菜单按钮选项菜单动态更新 OptionMenu 选项OptionMenu 样式设置OptionMenu 级联菜单

在本文中,将介绍如何创建 tkinter 菜单栏、、菜单按钮、选项菜单,向菜单栏添加菜单以及向每个菜单添加菜单项。

当应用程序包含大量功能时,需要使用菜单来组织它们以便于导航。通常,使用菜单对相关的操作进行分组。

要创建菜单,使用如下构造函数。

menu = tk.Menu(master, **options)

菜单

创建一个简单的菜单需要以下几个步骤:

1.创建一个菜单栏 menubar 并将其分配给窗口:

menubar = tk.Menu(root)

root.config(menu=menubar)

每个顶级窗口只能有一个菜单栏。

2.在菜单栏 menubar 创建一个菜单 file_menu

file_menu = Menu(menubar)

3.向菜单 file_menu 中添加菜单项 Exit

file_menu.add_command(label='Exit', command=root.destroy)

单击菜单项时,Python 将关闭窗口。

4.将菜单项 Exit 添加到菜单 file_menu,显示标签为 File

menubar.add_cascade(label="File", menu=file_menu, underline=0)

underline 选项允许创建键盘快捷键。指定快捷键字符的位置。该位置从 0 开始。

在以上示例中,将指定 File 的第一个字符,即您可以使用键盘快捷键 Alt+F

完整示例

import tkinter as tkroot = tk.Tk()root.geometry('600x400+200+200')root.title('Menu 菜单演示')menubar = tk.Menu(root)root.config(menu=menubar)file_menu = tk.Menu(menubar)file_menu.add_command(    label='Exit',    command=root.destroy,    underline=0    )menubar.add_cascade(    label="File",    menu=file_menu,    underline=0    )    root.mainloop()

默认情况下,在第一个菜单项之前会添加一条虚线。当单击虚线时,主窗口将从菜单中分离。

要删除虚线,可以为菜单添加参数 :tearoff = False

file_menu = Menu(menubar, tearoff=False)

可以继续为菜单项添加子菜单

1.创建一个菜单项:sub_menu

sub_menu = tk.Menu(file_menu, tearoff=0)

2.为菜单项 sub_menu 添加两个子菜单:

sub_menu.add_command(label='关闭当前文件')

sub_menu.add_command(label='关闭所有文件')

3.将菜单项 sub_menu 添加到菜单 file_menu,显示标签为 关闭文件

file_menu.add_cascade(label="关闭文件", menu=sub_menu)

完整示例

import tkinter as tkroot = tk.Tk()root.geometry('600x400+200+200')root.title('Menu 菜单演示')menubar = tk.Menu(root)root.config(menu=menubar)file_menu = tk.Menu(menubar, tearoff=False)file_menu.add_command(label='新建')file_menu.add_command(label='打开...')sub_menu = tk.Menu(file_menu, tearoff=0)sub_menu.add_command(label='关闭当前文件')sub_menu.add_command(label='关闭所有文件')file_menu.add_cascade(label="关闭文件", menu=sub_menu)file_menu.add_separator()file_menu.add_command(label='退出', command=root.destroy)menubar.add_cascade(label="文件", menu=file_menu)menubar.add_cascade(label="编辑")root.mainloop()

Tkinter 菜单函数

函数

说明

add_command()

将菜单项添加到菜单。

add_radiobutton()

向菜单添加单选按钮项

add_checkbutton()

向菜单添加复选框

add_cascade()

将菜单加入菜单栏。

add_separator()

在菜单中添加分隔线

add()

将指定类型的项目添加到菜单中

index()

返回指定菜单项的索引

菜单按钮

Menubutton 菜单按钮是菜单和按钮的组合,单击按钮时,会显示一个包含选项的菜单。

要创建Menubutton 菜单按钮,使用如下构造函数。

menu_button = tk.Menubutton(master, **options)

首先创建菜单按钮:

menubttn = tk.Menubutton(root, text = "程序设计", relief = tk.RAISED)

其次,为菜单按钮创建菜单,添加菜单项(复选、单选、菜单):

menu = tk.Menu(menubttn, tearoff = 0)

menu.add_checkbutton(label = "Python")

menu.add_radiobutton(label = "C++")

menu.add_command(label='打开')

最后,将菜单添加到菜单按钮:

menubttn["menu"] = menu

menubttn.pack(pady=20)

完整示例

import tkinter as tkroot = tk.Tk()root.geometry('600x400+200+200')root.title('Menubutton 菜单按钮演示')menubttn = tk.Menubutton(root, text = "程序设计", relief = tk.RAISED) menu = tk.Menu(menubttn, tearoff = 0)menu.add_checkbutton(label = "Python")menu.add_checkbutton(label = "Java")menu.add_radiobutton(label = "C++")menu.add_radiobutton(label = "PHP")menu.add_command(label='打开')menu.add_command(label='关闭')menubttn["menu"] = menumenubttn.pack(pady=20)root.mainloop()

以上示例中,为菜单按钮的菜单添加了两个复选按钮、两个单选按钮、两个菜单项。两个单选按钮不能同时选中。

选项菜单

选项菜单 OptionMenu 小组件基本上是一个下拉列表或弹出菜单,在下拉菜单中提供一组预定义的选项,并允许用户一次选择一个选项。。

要创建选项菜单,请使用构造函数:

optionmenu = tk.OptionMenu(master, variable, value, *values, **kwargs)

完整示例

import tkinter as tkroot = tk.Tk()root.geometry('600x400+200+200')root.title('OptionMenu 选项菜单演示')option_var = tk.StringVar(root)languages = ['Python', 'JavaScript', 'Java', 'C#', 'C++']def option_changed(*args):        output_label['text'] = f'你选择了:{option_var.get()}'option_var.set('Language')label = tk.Label(root,  text='请选择你喜欢的编程语言:')label.pack()option_menu = tk.OptionMenu(root, option_var, *languages, command=option_changed)option_menu.pack()output_label = tk.Label(root,  text='')output_label.pack()root.mainloop()

option_var:表示选项菜单选择的值;

*languages:表示选项菜单存储所有选项的列表的名称;

get():获取并返回 OptionMenu 中当前选定的选项;

set():设置 OptionMenu 中当前的选项;

动态更新 OptionMenu 选项

如果需要在运行时修改 OptionMenu 内容,比如需要删除旧选项并插入新选项。可以使用 add_command()delete() 方法。

import tkinter as tkroot = tk.Tk()root.geometry('600x400+200+200')root.title('OptionMenu 选项菜单演示')option_var = tk.StringVar(root)languages = ('Python', 'JavaScript', 'Java', 'C#', 'C++')def option_changed(*args):    output_label['text'] = f'你选择了:{option_var.get()}'def delete(*args):    option_menu['menu'].delete(0, 'end')def new(*args):    new_options = ["New option 1", "New option 2"]    for option in new_options:        option_menu['menu'].add_command(label=option, command=tk._setit(option_var, option))option_var.set('Language')label = tk.Label(root,  text='请选择你喜欢的编程语言:')label.pack()option_menu = tk.OptionMenu(root, option_var, *languages, command=option_changed)option_menu.pack()output_label = tk.Label(root,  text='')output_label.pack()button = tk.Button(root,  text='删除', command=delete)button.pack()button = tk.Button(root,  text='添加', command=new)button.pack()root.mainloop()
OptionMenu 样式设置

OptionMenu 不能直接设置宽度、高度参数,需要使用 config 方法。

option_menu.config(width=10)

option_menu.config(height=2)

OptionMenu 级联菜单

import tkinter as tkroot = tk.Tk()root.geometry('600x400+200+200')root.title('OptionMenu 选项菜单演示')primary = tk.StringVar()secondary = tk.StringVar() def menu_changed(*args):   if primary.get() == "山东省":        secondary.set("济南")        secondary_options = ["济南", "青岛", "淄博"]   else:         secondary.set("南京")        secondary_options = ["南京", "苏州"]           secondary_menu["menu"].delete(0, "end")   for option in secondary_options:       secondary_menu["menu"].add_command(label=option, command=tk._setit(secondary, option)) primary_opts = ["山东省", "江苏省"]primary_menu = tk.OptionMenu(root, primary, *primary_opts, command=menu_changed)primary.set("省份")primary_menu.config(width=15)primary_menu.pack()secondary_menu = tk.OptionMenu(root, secondary, "")secondary.set("城市")secondary_menu.config(width=15)secondary_menu.pack()root.mainloop()

OptionMenu 的唯一缺点是它无法处理大数据。由于下拉列表长度受限于屏幕大小,因此,在大量数据的情况下,可以使用 Listbox,因为它提供了滚动功能。

标签: #java按钮的位置 #java按钮的位置设置