Menu類控件用來實現頂層/下拉/彈出菜單。

Patterns

Toplevel menus被用來顯示在標題欄/root窗口或者其他頂層窗口上。創建一個頂層菜單,創建Menu類的實例,然後使用add方法添加命令或者其他菜單內容。

root = Tk()

def hello():

print "hello!"

# create a toplevel menu

menubar = Menu(root)

menubar.add_command(label="Hello!", command=hello)

menubar.add_command(label="Quit!", command=root.quit)

# display the menu

root.config(menu=menubar)

root.mainloop()

運行程序,如下圖所示:

下拉菜單或者其他子菜單可以通過相同的方式創建。一個主要的區別就是,他們是依附在主菜單上的(通過add_cascade方法),而不是在頂層窗口上。

root = Tk()

def hello():

print "hello!"

menubar = Menu(root)

# create a pulldown menu, and add it to the menu bar

filemenu = Menu(menubar, tearoff=0)

filemenu.add_command(label="Open", command=hello)

filemenu.add_command(label="Save", command=hello)

filemenu.add_separator()

filemenu.add_command(label="Exit", command=root.quit)

menubar.add_cascade(label="File", menu=filemenu)

# create more pulldown menus

editmenu = Menu(menubar, tearoff=0)

editmenu.add_command(label="Cut", command=hello)

editmenu.add_command(label="Copy", command=hello)

editmenu.add_command(label="Paste", command=hello)

menubar.add_cascade(label="Edit", menu=editmenu)

helpmenu = Menu(menubar, tearoff=0)

helpmenu.add_command(label="About", command=hello)

menubar.add_cascade(label="Help", menu=helpmenu)

# display the menu

root.config(menu=menubar)

最後我們通過同樣的方式創建一個彈出式菜單,但是通過post方法顯示顯示。

root = Tk()

def hello():

print "hello!"

# create a popup menu

menu = Menu(root, tearoff=0)

menu.add_command(label="Undo", command=hello)

menu.add_command(label="Redo", command=hello)

# create a canvas

frame = Frame(root, width=512, height=512)

frame.pack()

def popup(event):

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

# attach popup to canvas

frame.bind("", popup)

我們也可以在任何時候使用postcommand回調函數去創建或更新顯示的菜單。

counter = 0

def update():

global counter

counter = counter + 1

menu.entryconfig(0, label=str(counter))

root = Tk()

menubar = Menu(root)

menu = Menu(menubar, tearoff=0, postcommand=update)

menu.add_command(label=str(counter))

menu.add_command(label="Exit", command=root.quit)

menubar.add_cascade(label="Test", menu=menu)

root.config(menu=menubar)

運行此程序,點擊子菜單里第一個選項,就會調用update方法,從而重新配置自己,下一次再次點擊時,選項顯示的字符會自動加1。

第一次點擊:

第二次點擊:

python的menu_Python Tkinter Menu使用教程 | 學步園相关推荐

  1. Python GUI之tkinter窗口视窗教程大集合

    Python GUI之tkinter窗口视窗教程大集合 一.前言 二.Tkinter是什么 三.Tkinter 控件详细介绍 1. Tkinter 模块元素简要说明 2. 常用窗口部件及简要说明: 四 ...

  2. Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)

    一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 二.Tkinter 是什么 三.Tkinter 控件详细介绍 1. T ...

  3. Python GUI之tkinter窗口视窗教程

    一.前言 由于本篇文章较长,所以下面给出内容目录方便跳转阅读,当然也可以用博客页面最右侧的文章目录导航栏进行跳转查阅. 一.前言 二.Tkinter 是什么 三.Tkinter 控件详细介绍 1. T ...

  4. python pyqt eric_python+PyQT+Eric安裝配置 | 學步園

    一.大綱內容: 1.預備PC環境: 2.預備安裝程序: 2.1.下載Python3.2 2.2.下載PyQt4 2.3.下載Eric5 3.安裝配置步驟: 3.1.安裝Pyhon3.2 3.2.安裝P ...

  5. mysql jdbc 5.1.6_mysql5.0+Mysqljdbc5.1.6.jar的整合 | 學步園

    今天早上開始就開始用Eclipse開發使用mysql的java Project和Tomcat Project,研究了一個上午,終於搞定. 其中java Project就是簡單的Main函數實現,Tom ...

  6. mysql存儲過程_Mysql存儲過程 | 學步園

    一.創建存儲過程 在創建存儲過程之前,首先要了解delimiter 分界符,默認sql 語句分界符是 ; 分號,但為了寫較長的存儲過程,需要將默認分割符修改掉,建議修改為 //,如此之後,sql 語句 ...

  7. matlab engevalstring,Matlab 執行engEvalString命令介紹 | 學步園

    MATLAB與VC混合編程指導書 在調用 Matlab 引擎之前,首先應在相關文件中加入一行: #include "enging.h" ,該文件包含了引擎 API 函數的說明和所需 ...

  8. 八字易经算法之用JAVA实现完整排盘系统_八字易經演算法之用JAVA實現完整排盤系統 | 學步園...

    去年一天,一個朋友去看望病人回來就驚奇的告訴我,他發現和他朋友一起住院(肝膽科)的病人無一例外都是屬相為虎的病人,不是大一輪就是小一輪的.這是為什麼呢? 這不是什麼偶然,也不是什麼巧合.也許通過八字能 ...

  9. matlab怎么用wavedec,Matlab中wavedec使用學習及詳解 | 學步園

    最近在使用對ECG訊號進行小波係數的提取,所以用到了wavedec這個matlab中內置函數.然後盡心學習,發現還挺高深,不是我學到的衹是一點皮毛,因爲要對一段波形進行特徵提取,所以我要看哪個小波係數 ...

  10. mysql計劃任務_MySQL計劃任務 | 學步園

    MySQL的功能越來越強大了,逐漸在想大型商業資料庫靠攏了,這不,5.1的版本已然支持視圖.觸發器.job等功能. 下面簡單介紹下我所使用的MySQL的job功能(也就是計劃任務,Oracle中稱jo ...

最新文章

  1. Android之Adapter用法总结
  2. 在Android Studio进行“简单配置”单元测试(Android Junit)
  3. xdebug 远程调试
  4. ToolStrip和ToolStripButton的用法
  5. hadoop生态搭建(3节点)-10.spark配置
  6. 为了找工作的学习计划
  7. tomcat服务自动关闭_windows10系统关闭自动更新服务
  8. mysql索引b树和hash_B树索引和Hash索引的应用场景和区别(转载)
  9. 无法启动QPCore Service
  10. 【Algorithm】逆序数的分治求解
  11. (day 18 - 辅助栈)剑指 Offer 30. 包含min函数的栈
  12. 在飞桨平台做图像分类-1 制作基于飞桨的数据集|CSDN创作打卡
  13. 计算两个时间之间的进度百分比
  14. 视频问答社区VYou宣布关闭,问答社交模式会走向哪?
  15. RFBnet论文翻译:感受野块网络对于精确的和快速的目标检测
  16. 一个开源数据分析平台的搭建方法
  17. [JPBC] BigInteger 和 Element 的转换
  18. 宝宝痰湿体质——家长该如何调理
  19. VS2008向工具箱中添加控件解决 未能实例化 设计时授权
  20. Jar包阿里云服务器后台运行

热门文章

  1. mysql怎么进行删除操作_利用PHP怎么对MySQL数据库进行删除操作
  2. 蓝桥杯2021年第十二届C++省赛第七题-砝码称重
  3. 力扣-1925 统计平方和三元组的数目
  4. React antD 使用Select 进阶功能 远程搜索,防抖控制,加载状态
  5. 7-1 计算物体自由下落的距离 (5 分)
  6. P1541 乌龟棋 线性dp
  7. POJ 1470 Closest Common Ancestors(最近公共祖先 LCA)
  8. 个人.NET ORM全攻略,提供最新版本下载
  9. 华为/华三:OSPF多区域配置
  10. Linux基础命令及其常识