Python_tkinter_菜单(Menu)

菜单(Menu

 

菜单用语在界面中设置菜单,和多级子菜单

在tkinter中,菜单组件的添加与其他组件有所不同。 菜单需要使用所创建的主窗口的 config方法添加到窗口中。

这个小工具的目标是,让我们来创建我们的应用程序,可以通过使用各种菜单。核心功能,提供的方式来创建三个菜单类型:弹出式,顶层,和下拉

thinter.Menu(用于存放的父组件,属性参数...)

具有以下属性

activebackground    背景颜色,当它在鼠标下时将出现在选择上。
activeborderwidth   指定在鼠标下方选择的边框的宽度。默认值为1像素。
activeforeground    当它在鼠标下方时,将出现在选择上的前景色。
background(bg)      用于不在鼠标下的选择的背景颜色。
borderwidth(bd)     围绕所有选择的边框的宽度。默认值为1
cursor              当鼠标在选项上方时出现的光标,但仅当菜单已被关闭时显示。
disabledforeground  状态为DISABLED的项目的文本颜色。
font                设置文本的字体
foreground(fd)      用于不在鼠标下的选择的前景色。
postcommand         您可以将此选项设置为过程,并且每当有人启动此菜单时,将调用该过程。
relief              菜单的默认3-D效果为relief = RAISED
image               在这个menubutton上显示一个图像。
selectcolor         指定在检查按钮和单选按钮中显示的颜色。
tearoff             通常情况下,菜单可以被拆除,如果设置tearoff = 0,菜单将不会有撕纸功能,并且从0位置开始添加选择。
title               通常,撕下菜单窗口的标题将与导致此菜单的menubutton或级联文本相同。如果要更改该窗口的标题,请将标题选项设置为该字符串。

具有以下方法

add_command(选项)                在菜单中添加一个菜单项。
add_radiobutton(选项)            创建单选按钮菜单项。
add_checkbutton(选项)            创建一个检查按钮菜单项。
add_cascade(选项)                通过将给定的菜单与父菜单相关联来创建新的分层菜单
add_separator()                 在菜单中添加分隔线。
add(类型,选项)                   在菜单中添加一个特定类型的菜单项。
deletestartindex [endindex]  删除从startindex到endindex的菜单项。
entryconfigindexoptions      允许您修改由索引标识的菜单项,并更改其选项。
index(item)                       返回给定菜单项标签的索引号。
insert_separator(index)           在index指定的位置插入一个新的分隔符。
invokeindex                    调用与位置索引选择相关联的命令回调。如果一个检查按钮,其状态在设置和清除之间切换; 如果一个单选按钮,那个选择是设置的。
typeindex                      返回由index指定的选项的类型:“cascade”,“checkbutton”,“command”,“radiobutton”,“separator”或“tearoff”。

下拉菜单的菜单项

add_command添加菜单项,如果该菜单是顶层菜单,则添加的菜单项依次向右添加。 如果该菜单时顶层菜单的一个菜单项,则它添加的是下拉 菜单的菜单项。

  属性:  

    label:指定菜单的名称

    command:被点击时调用的方法

    acceletor:快捷键

  underline:是否拥有下划线

注意;

submenu = Tkinter.Menu(menu, tearoff = 0)

它的值只有01,将tearoff设置为1以后,就是表明这个菜单是可以独立出来的,如果是0的话就不可以独立出来。

EG1:

# 随机出一个数(多级菜单)
from tkinter import *

root = Tk()
root.title("随机一个数")


# Text(root,width=50).grid()
def hello():
    print("hello")


menu1 = Menu(root, tearoff=0) #1的话多了一个虚线,如果点击的话就会发现,这个菜单框可以独立出来显示
menu1.add_command(label="第一个")
menu1.add_separator()
menu1.add_command(label="第二个")
menu1.add_separator()
menu1.add_command(label="第三个")
menu1.add_separator()
menu1.add_command(label="第四个")
mebubar = Menu(root)
mebubar.add_command(label="你好", command=hello)
mebubar.add_cascade(label="分级", menu=menu1) #原理:先在主菜单中添加一个菜单,与之前创建的菜单进行绑定。
mebubar.add_command(label="退出", command=root.quit)
root.config(menu=mebubar)
root.mainloop()

实行结果:

Python_tkinter_菜单(Menu)_第1张图片

EG2:在子菜单中创建单选框,复选框

from tkinter import *

root = Tk()
# 创建主菜单
menu_main = Menu(root)
# 创建子菜单
menu1 = Menu(menu_main)
# 创建单选框
for i in ["c", "c++", "java", "c#", "python", "php"]:
    menu1.add_radiobutton(label=i)
# 添加分隔符
menu1.add_separator()
# 添加复选框
for i in ["1", "2", "3", "4", "5", "6"]:
    menu1.add_checkbutton(label=i)
menu_main.add_cascade(label="语言", menu=menu1)
root.config(menu=menu_main)
root.mainloop()

实行结果:

Python_tkinter_菜单(Menu)_第2张图片

EG3: 下拉框

import tkinter
from tkinter import ttk


def go(*args):  # 处理事件,*args表示可变参数
    print(comboxlist.get())  # 打印选中的值


win = tkinter.Tk()  # 构造窗体
comvalue = tkinter.StringVar()  # 窗体自带的文本,新建一个值
comboxlist = ttk.Combobox(win, textvariable=comvalue)  # 初始化
comboxlist["values"] = ("1", "2", "3", "4")
comboxlist.current(0)  # 选择第一个
comboxlist.bind("<>", go)  # 绑定事件,(下拉列表框被选中时,绑定go()函数)
comboxlist.pack()

win.mainloop()  # 进入消息循环

实行结果:

Python_tkinter_菜单(Menu)_第3张图片

参考:

https://www.jianshu.com/p/19d96f7107a0

https://my.oschina.net/u/2403163/blog/491077?p=1

你可能感兴趣的:(tkinter)