python函数做菜单_PYTHON图形化操作界面的编程七__创建菜单
PYTHON圖形化操作界面的編程七_(dá)_創(chuàng)建菜單
十八、創(chuàng)建菜單
1、水平菜單的創(chuàng)建
創(chuàng)建菜單需要多條語句,所以這里通過實(shí)例來說明水平菜單的創(chuàng)建方法:
下面的語句可以在窗口中添加水平菜單,其中前四行語句是導(dǎo)入tkinter庫和創(chuàng)建窗口w,從
第五行語句開始(紅框中的語句)為創(chuàng)建菜單語句,運(yùn)行結(jié)果如下面右圖所示。
上面紅框中的第一行代碼為創(chuàng)建菜單對(duì)象m,紅框中第2,3,4行代碼為向菜單對(duì)象m中添加菜單項(xiàng)。紅框中最后一條語句為將菜單顯示在窗口中(實(shí)際是向窗口的“menu”屬性賦值)
創(chuàng)建Menu對(duì)象時(shí)仍可使用前面介紹的控件的公共屬性,同時(shí)菜單對(duì)象還可以使用如下的屬性:
tearoff:該屬性取值可以為True或False,此屬性一般用在創(chuàng)建下拉菜單中,值為False時(shí),創(chuàng)建的各級(jí)菜單間無虛線分隔。如果值為True,則上下級(jí)菜單間顯示一條虛線分隔線且該菜單可以與上級(jí)菜單相分離。
menu:該屬性值為下級(jí)菜單對(duì)象的名稱。從而可以將另一菜單對(duì)象和本菜單項(xiàng)關(guān)聯(lián)起來。使另一菜單項(xiàng)成為本菜單的子菜單。
菜單對(duì)象的的方法:
add_cascade():向菜單對(duì)象中添加菜單項(xiàng)。上面紅框中的三行代碼就使用了這個(gè)方法。
add_command():向菜單對(duì)象中增加菜單命令。
add_separator():在菜單對(duì)象中創(chuàng)建菜單項(xiàng)間的分隔線
下面通過實(shí)例來說明 上面方法的應(yīng)用:
在上面的代碼基礎(chǔ)上添加下面的代碼,紅框中為添加的代碼:下面右圖為代碼運(yùn)行后的結(jié)果。
上面代碼中第一個(gè)紅框中的代碼為:創(chuàng)建第二個(gè)菜單對(duì)象f1。第二個(gè)紅框?yàn)樾〖t框,其代碼為:將新創(chuàng)建的菜單名稱添加到原來第一個(gè)水平菜單項(xiàng)的menu屬性中。使新創(chuàng)建的菜單對(duì)象成為原菜單的下級(jí)菜單。
第三個(gè)紅框中共有三條語句,第一條語句在f1菜單對(duì)象中添加菜單項(xiàng)(用add_cascade方法創(chuàng)建的是菜單項(xiàng),將來該菜單項(xiàng)下還有下級(jí)菜單)
第三個(gè)紅框中的第二、三條語句均使用add.command方法向菜單對(duì)象f1中添加菜單命令,說明這兩項(xiàng)本身就是菜單命令而無下級(jí)菜單。
第四個(gè)紅框中有兩條語句,第一條創(chuàng)建菜單分隔線,第二條創(chuàng)建菜單命令,并為該菜單命令的command屬性賦值exit,表示選中此菜單命令后就執(zhí)行“exit”命令關(guān)閉窗口,結(jié)束程序運(yùn)行。上面右圖是上面代碼運(yùn)行后的結(jié)果,子菜單中第一項(xiàng)為菜單項(xiàng),其余這菜單命令。
下面的代碼繼續(xù)為第一個(gè)子菜單項(xiàng)添加下級(jí)菜單命令。下面右圖為代碼運(yùn)行后的結(jié)果。
上面代碼中第一個(gè)紅框中的代碼為創(chuàng)建了第三個(gè)菜單對(duì)象名稱為ff1,第二個(gè)小紅框中的代碼為將新建立的菜單對(duì)象ff1的名稱賦值給上一個(gè)菜單子項(xiàng)的menu屬性,使新建立的菜單對(duì)象成為其子菜單項(xiàng)。
第三個(gè)紅框中共四條代碼,均用add_command方法創(chuàng)建,因此創(chuàng)建的均是菜單命令,為其指定command屬性后就可以執(zhí)行這些菜單命令。
下面為菜單命令指定執(zhí)行的函數(shù),為了減少代碼量而不影響問題的本質(zhì),我們假設(shè)點(diǎn)擊任一菜單命令均執(zhí)行同一個(gè)函數(shù)fun,代碼修改如下:下面紅框中的代碼為新添加的內(nèi)容。
第一個(gè)紅框?yàn)楹瘮?shù)定義。為了節(jié)省篇幅我們?cè)诤瘮?shù)中放置了一個(gè)空語句,該語句不執(zhí)行任何動(dòng)作,只是占一條語句的位置。
其余紅框中的代碼圴相同,只是為各菜單命令設(shè)置了command屬性,使點(diǎn)擊這些菜單項(xiàng)時(shí)執(zhí)行command屬性所指定的函數(shù)。
實(shí)際使用中我們要為每個(gè)菜單命令指定不同的函數(shù),并分別將這些函數(shù)名賦值給對(duì)應(yīng)的菜單命令的command屬性。
屬性tearoff取值對(duì)菜單的影響大家可以自行償試。通過上面介紹的方法我們可以構(gòu)建任何結(jié)構(gòu)的菜單。
2、快捷菜單的創(chuàng)建
快捷菜單是右擊鼠標(biāo)后出現(xiàn)的菜單,創(chuàng)建快捷菜單很簡單,下面是創(chuàng)建快捷菜單的步驟:
1)先用下面的語句創(chuàng)建Menu對(duì)象:
q=Menu(tearoff=False)
其中 q是Menu對(duì)象的名稱,屬性tearoff=False是為了使創(chuàng)建的菜單不出現(xiàn)虛線分隔
2)用下面的語句向菜單對(duì)象中添加菜單命令,屬性command后的值為選中該快捷菜單項(xiàng)后執(zhí)行的函數(shù)名稱。
q.add_command(label="復(fù)制",command=copy)
q.add_command(label="剪切",command=cut)
q.add_command(label="粘貼",command=paste)
3)用下面的語句將菜單綁定到窗口或其他控件,本例中綁定的是窗體。即右擊窗口中的任意位置彈出快捷菜單。下面語句中的w是窗體的名稱。若要綁定其他控件,則要用其他控件的名稱。pop是點(diǎn)擊鼠標(biāo)右鍵后執(zhí)行的函數(shù)或方法的名稱。
w.bind("",pop)
4)用下面的代碼定義pop方法,方法內(nèi)容是調(diào)用菜單對(duì)象的post()方法完成參數(shù)的傳遞。
def
pop(event):
q.post(event.x_root,event.y_root)
5)定義選中菜單項(xiàng)后要執(zhí)行的各函數(shù)
根據(jù)菜單項(xiàng)的功能,定義菜單項(xiàng)對(duì)應(yīng)的函數(shù),此例中要分別定義三個(gè)函數(shù),此處只是為了驗(yàn)證快捷菜單項(xiàng)的執(zhí)行情況,在每個(gè)函數(shù)中添加了一條輸出語句。
def
copy():
print("copy")
def
cut():
print("cut")
def
paste():
print("paste")
最后的完整代碼如下所示
上面代碼運(yùn)行后,在窗口空白外右擊鼠標(biāo),出現(xiàn)快捷菜單,參見下圖。
下面的代碼可以創(chuàng)建二級(jí)快捷菜單,運(yùn)行結(jié)果如下面右圖所示。為了減少代碼量而又不影響問題的討論,下面代碼將各菜單項(xiàng)的執(zhí)行函數(shù)均設(shè)置為op,紅框標(biāo)出的代碼為在上面例子的代碼基礎(chǔ)上添加的新代碼。
仔細(xì)分析上面代碼,不難看出,和前面下拉菜單創(chuàng)建時(shí)的方法是基本相同的。
總結(jié)
以上是生活随笔為你收集整理的python函数做菜单_PYTHON图形化操作界面的编程七__创建菜单的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocos creator 游戏源码_C
- 下一篇: python下载文件并改名_第46p,8