python tkinter button command,python tkinter 菜单

  python tkinter button command,python tkinter 菜单

  菜单控件(Menu control)可以说是GUI的“精髓”。它可视化地将一系列命令分组,在每个分组下可以“隐藏”许多程序执行命令(即函数)。本文将详细介绍其使用方法,有需要的可以参考。

  00-1010创建主目录菜单创建下拉菜单创建弹出菜单栏菜单按钮控件菜单控件(Menu control)可以说是GUI的“精髓”。它在视觉上将一系列命令分组,并可以在每个分组下“隐藏”许多程序执行命令(即函数)。菜单打开时,这些命令会“显式”呈现,方便用户选择,比如记事本文件的界面(。txt文件类型)在Windows系统中:

  图1:菜单界面

  通过使用菜单控件,我们可以充分节省有限的窗口面积,使我们的界面更加简洁优雅,避免臃肿和混乱。

  TKMenu控件提供了三种类型的菜单:topleve(主页菜单)、pull-down(下拉菜单)和pop-up(弹出菜单,或快捷菜单)。

  下表列出了创建菜单时使用的相关方法,如下所示:

  说明add_cascade(**options)添加一个父菜单,通过menu参数将指定的子菜单与父菜单连接起来,从而创建一个下拉菜单。Add_checkbutton(**options)添加多选按钮的菜单项add_command(**options)添加普通命令菜单项add_radiobutton(**options)添加单选按钮的菜单项add_separator(**options)添加分隔线add(add(itemType,options))添加菜单项,其中itemType参数可以是以下几种:“command”,“cascade”,

  “Checkbutton”、“radiobutton”和“separator”,并使用options选项来设置它们。

  其他菜单属性。除了上述方法,菜单控制还提供了一些其他的方法来操作菜单项,如删除菜单项、获取菜单项、设置指定菜单项等。如下表所示:

  描述delete(index1,index2=None)1。删除从索引1到索引2的所有菜单项

  2.如果忽略index2参数,则删除index1指向的菜单项entry get(index,option)以获取值entryconfig(index,**options)设置指定菜单项index(index)的选项,并返回与index参数insert (index,itemtype,* * options)对应的选项的序列号,以将指定类型的菜单项插入到index参数指定的位置。该类型可以是

  是:“命令”、“层叠”、“复选按钮”、“单选按钮”

  或者你也可以使用insert_ type()的形式,

  例如,insert_cascade(索引,* *选项).等等。invoke(index)调用与index指定的菜单项关联的方法post(x,y ),在指定位置显示弹出菜单类型(index ),并获取index参数来指定菜。

  单项的类型unpost()移除弹出菜单yposition(index)返回 index 参数指定的菜单项的垂直偏移位置

  下面对 Menu 控件的 options 参数做简单地介绍,如下所示:

  属性说明accelerator1. 设置菜单项的快捷键,快捷键会显示在菜单项目的右边,比如accelerator = "Ctrl+O" 表示打开;
2. 注意,此选项并不会自动将快捷键与菜单项连接在一起,必须通过按键绑定来实现command选择菜单项时执行的 callback 函数label定义菜单项内的文字menu此属性与 add_cascade() 方法一起使用,用来新增菜单项的子菜单项selectcolor指定当菜单项显示为单选按钮或多选按钮时选择中标志的颜色state定义菜单项的状态,可以是 normal、active 或 disabledonvalue/offvalue1. 默认情况下,variable 选项设置为 1 表示选中状态,反之设置为 0,设置 offvalue/onvalue 的值可以自定义未选中状态的值
2.tearoff1. 如果此选项为 True,在菜单项的上面就会显示一个可选择的分隔线;
2. 注意:分隔线会将此菜单项分离出来成为一个新的窗口underline设置菜单项中哪一个字符要有下画线value1. 设置按钮菜单项的值
2.在同一组中的所有按钮应该拥有各不相同的值
3.通过将该值与 variable 选项的值对比,即可判断用户选中了哪个按钮variable当菜单项是单选按钮或多选按钮时,与之关联的变量

  

  

创建主目录菜单

  主目录菜单也称之为顶级菜单,下拉菜单等其他子菜单的都需要建立在顶级菜单的基础之上,下面示例创建了一个类似于记事本界面的程序,代码如下:

  

from tkinter import *

  import tkinter . messagebox

  #创建主窗口

  win = Tk()

  win.config(bg=#87CEEB)

  win.title("C语言中文网")

  win.geometry(450x350+300+200)

  win.iconbitmap(C:/Users/Administrator/Desktop/C语言中文网logo.ico)

  # 绑定一个执行函数,当点击菜单项的时候会显示一个消息对话框

  def menuCommand() :

   tkinter.messagebox.showinfo("主菜单栏","你正在使用主菜单栏")

  # 创建一个主目录菜单,也被称为顶级菜单

  main_menu = Menu (win)

  #新增命令菜单项,使用 add_command() 实现

  main_menu.add_command (label="文件",command=menuCommand)

  main_menu.add_command (label="编辑",command=menuCommand)

  main_menu.add_command (label="格式",command=menuCommand)

  main_menu.add_command (label="查看",command=menuCommand)

  main_menu.add_command (label="帮助",command=menuCommand)

  #显示菜单

  win.config (menu=main_menu)

  win.mainloop()

  程序运行结果如下:

  

  

图2:Menu 控件创建主菜单

  如上图所示,当点击主目录中的任意一个菜单选项时都会跳出一个消息对话框。

  

  

创建下拉菜单

  下拉菜单时主菜单的重要组成部分,也是用户选择相关命令的重要交互界面,下拉菜单的创建方式也非常简单,不过需要我们注意,下拉菜单是建立的主菜单(即顶级菜单)的基础之上的,并非主窗口之上,这一点千万不要搞混,否则创建下拉菜单会失败。

  下面继续仿照记事本的相关功能来创建下拉菜单,示例如下:

  

#创建一个下拉式菜单

  from tkinter import *

  import tkinter .messagebox

  #创建主窗口

  win = Tk()

  win.config(bg=#87CEEB)

  win.title("C语言中文网")

  win.geometry(450x350+300+200)

  win.iconbitmap(C:/Users/Administrator/Desktop/C语言中文网logo.ico)

  #创建一个执行函数,点击下拉菜单中命令时执行

  def menuCommand() :

   tkinter .messagebox .showinfo("下拉菜单", "您正在使用下拉菜单功能")

  #创建主目录菜单(顶级菜单)

  mainmenu = Menu (win)

  #在顶级菜单上新增"文件"菜单的子菜单,同时不添加分割线

  filemenu = Menu (mainmenu, tearoff=False)

  #新增"文件"菜单的菜单项,并使用 accelerator 设置菜单项的快捷键

  filemenu.add_command (label="新建",command=menuCommand,accelerator="Ctrl+N")

  filemenu.add_command (label="打开",command=menuCommand, accelerator="Ctrl+O")

  filemenu.add_command (label="保存",command=menuCommand, accelerator="Ctrl+S")

  # 添加一条分割线

  filemenu.add_separator ()

  filemenu.add_command (label="退出",command=win. quit)

  #在主目录菜单上新增"文件"选项,并通过menu参数与下拉菜单绑定

  mainmenu.add_cascade (label="文件",menu=filemenu)

  # 将主菜单设置在窗口上

  win.config (menu=mainmenu)

  # 绑定键盘事件,按下键盘上的相应的键时都会触发执行函数

  win.bind ("<Control-n>",menuCommand)

  win. bind ("<Control-N>", menuCommand)

  win.bind ("<Control-o>",menuCommand)

  win. bind ("<Control-O>", menuCommand)

  win. bind ("<Control-s>", menuCommand)

  win.bind ("<Control-S>",menuCommand)

  # 显示主窗口

  win.mainloop()

  程序运行解结果如下:

  

  

图3:Menu 控件下拉菜单

  

  

创建弹出菜单栏

  弹出式菜单栏,也称为快捷式菜单栏,比如通过点击鼠标右键弹出一个菜单栏,其中包含一些常用的选项卡,如复制、粘贴等,如下所示:在记事本的空白处点击鼠标右键会弹出一个菜单栏。

  

  

图4:弹出式菜单栏

  Tkinter Menu 控件同样可以是实现上述功能,而且并不复杂,示例如下:

  

import tkinter as tk

  root = tk.Tk()

  root.config(bg=#8DB6CD)

  root.title("C语言中文网")

  root.geometry(400x300)

  root.iconbitmap(C:/Users/Administrator/Desktop/C语言中文网logo.ico)

  def func():

   print(您通过弹出菜单执行了命令)

  # 创建一个弹出菜单

  menu = tk.Menu(root, tearoff=False)

  menu.add_command(label="新建", command=func)

  menu.add_command(label="复制", command=func)

  menu.add_command(label="粘贴", command=func)

  menu.add_command(label="剪切", command=func)

  # 定义事件函数

  def command(event):

   # 使用 post()在指定的位置显示弹出菜单

   menu.post(event.x_root, event.y_root)

  # 绑定鼠标右键,这是鼠标绑定事件

  # <Button-3>表示点击鼠标的右键,1 表示左键,2表示点击中间的滑轮

  root.bind("<Button-3>", command)

  root.mainloop()

  程序运行结果如下:

  

  

图5:Menu控件弹出菜单

  

  

菜单按钮控件

  Menubutton(菜单按钮控件)是一个与 Menu 控件相关联的按钮,当我们按下按钮的时候下拉菜单就会自动弹出。通过 Menubutton 创建的菜单按钮可以自由地放置在窗口中的任意位置,从而提高了 GUI 界面的灵活性。

  下面看一组简单使用示例:

  

from tkinter import *

  win=Tk()

  win.config(bg=#87CEEB)

  win.title("C语言中文网")

  win.geometry(450x350+300+200)

  win.iconbitmap(C:/Users/Administrator/Desktop/C语言中文网logo.ico)

  #创建一个菜单按钮

  menubtn=Menubutton(win, text=点击进行操作, relief=sunk)

  # 设置位置(布局)

  menubtn.grid(padx=195, pady=105)

  #添加菜单,使用 tearoff 参数不显示分割线

  filemenu=Menu(menubtn,tearoff = False)

  filemenu.add_command(label=新建)

  filemenu.add_command(label=删除)

  filemenu.add_command(label=复制)

  filemenu.add_command(label=保存)

  # 显示菜单,将菜单命令绑定在菜单按钮对象上

  menubtn.config(menu=filemenu)

  win.mainloop()

  程序运行结果如下:

  

  

图6:Menubutton菜单按钮

  以上就是Python Tkinter Menu控件使用详解的详细内容,更多关于Python Tkinter Menu的资料请关注盛行IT软件开发工作室其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: