Tkinter教程之Menu篇

來源:互聯網
上載者:User

標籤:blog   http   io   os   使用   java   ar   for   art   

本文轉載自:http://blog.csdn.net/jcodeer/article/details/1811321

‘‘‘Tkinter教程之Menu篇‘‘‘
‘‘‘1.建立一個簡單的Menu‘‘‘
#添加菜單hello和quit,將hello菜單與hello函數綁定;quit菜單與root.quit綁定
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
def hello():
    print ‘hello menu‘
menubar = Menu(root)
#建立主菜單,每個菜單對應的回呼函數都是hello
for item in [‘Python‘,‘PHP‘,‘CPP‘,‘C‘,‘Java‘,‘JavaScript‘,‘VBScript‘]:
    menubar.add_command(label = item,command = hello)
#將root的menu屬性設定為menubar
root[‘menu‘] = menubar
root.mainloop()
#這個菜單沒有下拉式功能表,僅包含兩個功能表項目

‘‘‘2.添加下拉式功能表‘‘‘
from Tkinter import *
root = Tk()
def hello():
    print ‘hello menu‘
menubar = Menu(root)

filemenu = Menu(menubar,tearoff = 0)
for item in [‘Python‘,‘PHP‘,‘CPP‘,‘C‘,‘Java‘,‘JavaScript‘,‘VBScript‘]:
    filemenu.add_commad(label = item,command = hello)
#將menubar的menu屬性指定為filemenu,即filemenu為menubar的下拉式功能表
menubar.add_cascade(label = ‘Language‘,menu = filemenu)
root[‘menu‘] = menubar
root.mainloop()

‘‘‘3.向菜單中添加Checkbutton項‘‘‘
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
#每次列印出各個變數的當前值
def printItem():
    print ‘Python = ‘,vPython.get()
    print ‘PHP = ‘,vPHP.get()
    print ‘CPP = ‘,vCPP.get()
    print ‘C = ‘,vC.get()
    print ‘Java = ‘,vJava.get()
    print ‘JavaScript = ‘,vJavaScript.get()
    print ‘VBScript = ‘,vVBScript.get()
    
menubar = Menu(root)

vPython = StringVar()
vPHP     = StringVar()
vCPP     = StringVar()
vC         = StringVar()
vJava     = StringVar()
vJavaScript = StringVar()
vVBScript     = StringVar()

filemenu = Menu(menubar,tearoff = 0)
for k,v in {‘Python‘:vPython,
               ‘PHP‘:vPHP,
               ‘CPP‘:vCPP,
               ‘C‘:vC,
               ‘Java‘:vJava,
               ‘JavaScript‘:vJavaScript,
               ‘VBScript‘:vVBScript}.items():
    #綁定變數與回呼函數
    filemenu.add_checkbutton(label = k,command = printItem,variable = v)
#將menubar的menu屬性指定為filemenu,即filemenu為menubar的下拉式功能表
menubar.add_cascade(label = ‘Language‘,menu = filemenu)
root[‘menu‘] = menubar
root.mainloop()
#程式運行,使用了Checkbutton,並通過printItem將每個Checkbutton在當前值列印出來。

‘‘‘4.向菜單 中添加Radiobutton項‘‘‘
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()

menubar = Menu(root)
vLang = StringVar()
#每次列印出當前選中的語言
def printItem():
    print ‘vLang = ‘,vLang.get()
filemenu = Menu(menubar,tearoff = 0)
for k in [‘Python‘,‘PHP‘,‘CPP‘,‘C‘,‘Java‘,‘JavaScript‘,‘VBScript‘]:
    #綁定變數與回呼函數,指定的變數vLang將這幾項劃為一組
    filemenu.add_radiobutton(label = k,command = printItem,variable = vLang)
#將menubar的menu屬性指定為filemenu,即filemenu為menubar的下拉式功能表
menubar.add_cascade(label = ‘Language‘,menu = filemenu)
root[‘menu‘] = menubar
root.mainloop()
#程式每次列印出當前選中的語言
#與Checkbutton不同的是,同一個組內只有一個處於選中狀態。

‘‘‘5.向菜單中添加分隔字元‘‘‘
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
menubar = Menu(root)

#每次列印出當前選中的語言
def printItem():
    print ‘add_separator‘

filemenu = Menu(menubar,tearoff = 0)
for k in [‘Python‘,‘PHP‘,‘CPP‘,‘C‘,‘Java‘,‘JavaScript‘,‘VBScript‘]:
    filemenu.add_command(label = k,command = printItem)
    #將各個功能表項目使用分隔字元隔開
    filemenu.add_separator()
menubar.add_cascade(label = ‘Language‘,menu = filemenu)
root[‘menu‘] = menubar
root.mainloop()
#分隔字元將相關的功能表項目進行分組,只是UI上的實現,程式上沒有任何改變,它也不執行任何的命令

‘‘‘ 6.將以上的例5中的菜單改為右擊快顯功能表‘‘‘
#方法是通過綁定滑鼠右鍵,每當點擊時彈出這個菜單,去掉與root的關聯
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
menubar = Menu(root)

def printItem():
    print ‘popup menu‘

filemenu = Menu(menubar,tearoff = 0)
for k in [‘Python‘,‘PHP‘,‘CPP‘,‘C‘,‘Java‘,‘JavaScript‘,‘VBScript‘]:
    filemenu.add_command(label = k,command = printItem)
    filemenu.add_separator()
menubar.add_cascade(label = ‘Language‘,menu = filemenu)
#此時就不要將root的menu設定為menubar了
#root[‘menu‘] = menubar
def popup(event):
    #顯示菜單
    menubar.post(event.x_root,event.y_root)
#在這裡相應滑鼠的右鍵事件,右擊時調用popup,此時與菜單綁定的是root,可以設定為其它的控制項,在綁定的控制項上右擊就可以快顯功能表
root.bind(‘<Button-3>‘,popup)
root.mainloop()
#運行測試一個,可以看到各個菜單 項的功能都是可以使用的,所以快顯功能表與一般的菜單功能是一樣的,只是彈出的方式不同而已。

‘‘‘ 7.以下的代碼示範了功能表項目的操作方法,包括添加各種功能表項目,刪除一個或多個功能表項目‘‘‘
# -*- coding: cp936 -*-
from Tkinter import *
root = Tk()
menubar = Menu(root)

def printItem():
    print ‘add_separator‘

filemenu = Menu(menubar,tearoff = 0)
for k in range(5):
    filemenu.add_command(label = str(k),command = printItem)
menubar.add_cascade(label = ‘Language‘,menu = filemenu)

‘‘‘以下為向菜單中添加項的操作‘‘‘
#在索引1添加一菜單command項
filemenu.insert_command(1,label = ‘1000‘,command = printItem)
#在索引2添加一菜單checkbutton項
filemenu.insert_checkbutton(2,label = ‘2000‘,command = printItem)
#在索引3添加一菜單radiobutton項
filemenu.insert_radiobutton(3,label = ‘3000‘,command = printItem)
#將新添加的功能表項目使用分隔字元隔開
filemenu.insert_separator(1)
filemenu.insert_separator(5)

‘‘‘以下為刪除功能表項目的操作‘‘‘
#刪除索引6-9的功能表項目
filemenu.delete(6,9)
#刪除索引為0的功能表項目
filemenu.delete(0)

root[‘menu‘] = menubar
root.mainloop()
#分隔字元將相關的功能表項目進行分組,只是UI上的實現,程式上沒有任何改變,它也不執行任何的命令

Tkinter教程之Menu篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.