欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Tkinter Menu控件使用詳解

 更新時(shí)間:2022年01月21日 11:48:06   作者:嚴(yán)長(zhǎng)生  
Menu控件(菜單控件)可以說是 GUI 中“精髓所在”,它以可視化的方式將一系列的命令進(jìn)行分組,在每一個(gè)分組下又可以“隱藏”許多的程序執(zhí)行命令(即功能)。本文將詳細(xì)介紹它的使用,需要的可以參考一下

Menu 控件(菜單控件)可以說是 GUI 中“精髓所在”,它以可視化的方式將一系列的命令進(jìn)行分組,在每一個(gè)分組下又可以“隱藏”許多的程序執(zhí)行命令(即功能)。當(dāng)打開菜單時(shí),這些命令就會(huì)“顯式”的呈現(xiàn)出來,方便用戶進(jìn)行選擇,比如 Windows 系統(tǒng)中記事本文件(.txt文件類型)的界面:

圖1:Menu菜單界面

通過使用菜單控件(Menu)可以充分地節(jié)省有限的窗口區(qū)域,讓我們的界面更加簡(jiǎn)潔優(yōu)雅,避免臃腫、混亂。 

Tkinter Menu 控件提供了三種類型的菜單,分別是:topleve(主目錄菜單)、pull-down(下拉式菜單)、pop-up(彈出式菜單,或稱快捷式菜單)。

下表列出創(chuàng)建菜單時(shí)用到的相關(guān)方法,如下所示:

方法說明
add_cascade(**options)添加一個(gè)父菜單,將一個(gè)指定的子菜單,通過 menu 參數(shù)與父菜單連接,從而創(chuàng)建一個(gè)下拉菜單。
add_checkbutton(**options)添加一個(gè)多選按鈕的菜單項(xiàng)
add_command(**options) 添加一個(gè)普通的命令菜單項(xiàng)
add_radiobutton(**options)添加一個(gè)單選按鈕的菜單項(xiàng)
add_separator(**options) 添加一條分割線
add(add(itemType, options))添加菜單項(xiàng),此處 itemType 參數(shù)可以是以下幾種:"command"、"cascade",
"checkbutton"、"radiobutton"、"separator" 五種,并使用 options 選項(xiàng)來設(shè)置
菜單其他屬性。

除了上述方法之外,Menu 控件也提供了一些其他方法來操作菜單項(xiàng),比如刪除菜單項(xiàng)、獲取菜單項(xiàng)、設(shè)置指定的菜單項(xiàng)等,如下表所示:

方法說明
delete(index1, index2=None)1. 刪除 index1 ~ index2(包含)的所有菜單項(xiàng)
2. 如果忽略 index2 參數(shù),則刪除 index1 指向的菜單項(xiàng)
entrycget(index, option)獲得指定菜單項(xiàng)的某選項(xiàng)的值
entryconfig(index, **options)設(shè)置指定菜單項(xiàng)的選項(xiàng)
index(index)返回與 index 參數(shù)相應(yīng)的選項(xiàng)的序號(hào)
insert(index, itemType, **options)插入指定類型的菜單項(xiàng)到 index 參數(shù)指定的位置,類型可以是
是:"command","cascade","checkbutton","radiobutton"
或 "separator" 中的一個(gè),或者也可以使用 insert_類型() 形式來,
比如 insert_cascade(index, **options)..等
invoke(index)調(diào)用 index 指定的菜單項(xiàng)相關(guān)聯(lián)的方法
post(x, y)在指定的位置顯示彈出菜單
type(index)獲得 index 參數(shù)指定菜單項(xiàng)的類型
unpost()移除彈出菜單
yposition(index)返回 index 參數(shù)指定的菜單項(xiàng)的垂直偏移位置

下面對(duì) Menu 控件的 options 參數(shù)做簡(jiǎn)單地介紹,如下所示:

屬性說明
accelerator1. 設(shè)置菜單項(xiàng)的快捷鍵,快捷鍵會(huì)顯示在菜單項(xiàng)目的右邊,比如 accelerator = "Ctrl+O" 表示打開;
2. 注意,此選項(xiàng)并不會(huì)自動(dòng)將快捷鍵與菜單項(xiàng)連接在一起,必須通過按鍵綁定來實(shí)現(xiàn)
command選擇菜單項(xiàng)時(shí)執(zhí)行的 callback 函數(shù)
label定義菜單項(xiàng)內(nèi)的文字
menu此屬性與 add_cascade() 方法一起使用,用來新增菜單項(xiàng)的子菜單項(xiàng)
selectcolor指定當(dāng)菜單項(xiàng)顯示為單選按鈕或多選按鈕時(shí)選擇中標(biāo)志的顏色
state定義菜單項(xiàng)的狀態(tài),可以是 normal、active 或 disabled
onvalue/offvalue1. 默認(rèn)情況下,variable 選項(xiàng)設(shè)置為 1 表示選中狀態(tài),反之設(shè)置為 0,設(shè)置 offvalue/onvalue 的值可以自定義未選中狀態(tài)的值
2. 
tearoff1. 如果此選項(xiàng)為 True,在菜單項(xiàng)的上面就會(huì)顯示一個(gè)可選擇的分隔線;
2. 注意:分隔線會(huì)將此菜單項(xiàng)分離出來成為一個(gè)新的窗口
underline設(shè)置菜單項(xiàng)中哪一個(gè)字符要有下畫線
value1. 設(shè)置按鈕菜單項(xiàng)的值
2. 在同一組中的所有按鈕應(yīng)該擁有各不相同的值
3. 通過將該值與 variable 選項(xiàng)的值對(duì)比,即可判斷用戶選中了哪個(gè)按鈕
variable當(dāng)菜單項(xiàng)是單選按鈕或多選按鈕時(shí),與之關(guān)聯(lián)的變量

創(chuàng)建主目錄菜單

主目錄菜單也稱之為“頂級(jí)菜單”,下拉菜單等其他子菜單的都需要建立在“頂級(jí)菜單”的基礎(chǔ)之上,下面示例創(chuàng)建了一個(gè)類似于“記事本”界面的程序,代碼如下:

from tkinter import *
import tkinter . messagebox
#創(chuàng)建主窗口
win = Tk()
win.config(bg='#87CEEB')
win.title("C語言中文網(wǎng)")
win.geometry('450x350+300+200')
win.iconbitmap('C:/Users/Administrator/Desktop/C語言中文網(wǎng)logo.ico')
# 綁定一個(gè)執(zhí)行函數(shù),當(dāng)點(diǎn)擊菜單項(xiàng)的時(shí)候會(huì)顯示一個(gè)消息對(duì)話框
def menuCommand() :
    tkinter.messagebox.showinfo("主菜單欄","你正在使用主菜單欄")
# 創(chuàng)建一個(gè)主目錄菜單,也被稱為頂級(jí)菜單
main_menu = Menu (win)
#新增命令菜單項(xiàng),使用 add_command() 實(shí)現(xiàn)
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()

程序運(yùn)行結(jié)果如下:

圖2:Menu 控件創(chuàng)建主菜單

如上圖所示,當(dāng)點(diǎn)擊主目錄中的任意一個(gè)菜單選項(xiàng)時(shí)都會(huì)跳出一個(gè)消息對(duì)話框。

創(chuàng)建下拉菜單

下拉菜單時(shí)主菜單的重要組成部分,也是用戶選擇相關(guān)命令的重要交互界面,下拉菜單的創(chuàng)建方式也非常簡(jiǎn)單,不過需要我們注意,下拉菜單是建立的主菜單(即頂級(jí)菜單)的基礎(chǔ)之上的,并非主窗口之上,這一點(diǎn)千萬不要搞混,否則創(chuàng)建下拉菜單會(huì)失敗。

下面繼續(xù)仿照“記事本”的相關(guān)功能來創(chuàng)建下拉菜單,示例如下:

#創(chuàng)建一個(gè)下拉式菜單
from tkinter import *
import tkinter .messagebox
#創(chuàng)建主窗口
win = Tk()
win.config(bg='#87CEEB')
win.title("C語言中文網(wǎng)")
win.geometry('450x350+300+200')
win.iconbitmap('C:/Users/Administrator/Desktop/C語言中文網(wǎng)logo.ico')
#創(chuàng)建一個(gè)執(zhí)行函數(shù),點(diǎn)擊下拉菜單中命令時(shí)執(zhí)行
def menuCommand() :
    tkinter .messagebox .showinfo("下拉菜單", "您正在使用下拉菜單功能")
#創(chuàng)建主目錄菜單(頂級(jí)菜單)
mainmenu = Menu (win)
#在頂級(jí)菜單上新增"文件"菜單的子菜單,同時(shí)不添加分割線
filemenu = Menu (mainmenu, tearoff=False)
#新增"文件"菜單的菜單項(xiàng),并使用 accelerator 設(shè)置菜單項(xiàng)的快捷鍵
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)
#在主目錄菜單上新增"文件"選項(xiàng),并通過menu參數(shù)與下拉菜單綁定
mainmenu.add_cascade (label="文件",menu=filemenu)
# 將主菜單設(shè)置在窗口上
win.config (menu=mainmenu)
# 綁定鍵盤事件,按下鍵盤上的相應(yīng)的鍵時(shí)都會(huì)觸發(fā)執(zhí)行函數(shù)
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()

程序運(yùn)行解結(jié)果如下:

圖3:Menu 控件下拉菜單

創(chuàng)建彈出菜單欄

彈出式菜單欄,也稱為快捷式菜單欄,比如通過點(diǎn)擊鼠標(biāo)右鍵彈出一個(gè)菜單欄,其中包含一些常用的選項(xiàng)卡,如復(fù)制、粘貼等,如下所示:在記事本的空白處點(diǎn)擊鼠標(biāo)右鍵會(huì)彈出一個(gè)菜單欄。

圖4:彈出式菜單欄

Tkinter Menu 控件同樣可以是實(shí)現(xiàn)上述功能,而且并不復(fù)雜,示例如下:

import tkinter as tk
root = tk.Tk()
root.config(bg='#8DB6CD')
root.title("C語言中文網(wǎng)")
root.geometry('400x300')
root.iconbitmap('C:/Users/Administrator/Desktop/C語言中文網(wǎng)logo.ico')
def func():
    print('您通過彈出菜單執(zhí)行了命令')
# 創(chuàng)建一個(gè)彈出菜單
menu = tk.Menu(root, tearoff=False)
menu.add_command(label="新建", command=func)
menu.add_command(label="復(fù)制", command=func)
menu.add_command(label="粘貼", command=func)
menu.add_command(label="剪切", command=func)
# 定義事件函數(shù)
def command(event):
    # 使用 post()在指定的位置顯示彈出菜單
    menu.post(event.x_root, event.y_root)
   
# 綁定鼠標(biāo)右鍵,這是鼠標(biāo)綁定事件
# <Button-3>表示點(diǎn)擊鼠標(biāo)的右鍵,1 表示左鍵,2表示點(diǎn)擊中間的滑輪
root.bind("<Button-3>", command)
root.mainloop()

程序運(yùn)行結(jié)果如下:

圖5:Menu控件彈出菜單

菜單按鈕控件

Menubutton(菜單按鈕控件)是一個(gè)與 Menu 控件相關(guān)聯(lián)的按鈕,當(dāng)我們按下按鈕的時(shí)候下拉菜單就會(huì)自動(dòng)彈出。通過 Menubutton 創(chuàng)建的菜單按鈕可以自由地放置在窗口中的任意位置,從而提高了 GUI 界面的靈活性。

下面看一組簡(jiǎn)單使用示例:

from tkinter import *
win=Tk()
win.config(bg='#87CEEB')
win.title("C語言中文網(wǎng)")
win.geometry('450x350+300+200')
win.iconbitmap('C:/Users/Administrator/Desktop/C語言中文網(wǎng)logo.ico')
#創(chuàng)建一個(gè)菜單按鈕
menubtn=Menubutton(win, text='點(diǎn)擊進(jìn)行操作', relief='sunk')
# 設(shè)置位置(布局)
menubtn.grid(padx=195, pady=105)
#添加菜單,使用 tearoff 參數(shù)不顯示分割線
filemenu=Menu(menubtn,tearoff = False)
filemenu.add_command(label='新建')
filemenu.add_command(label='刪除')
filemenu.add_command(label='復(fù)制')
filemenu.add_command(label='保存')
# 顯示菜單,將菜單命令綁定在菜單按鈕對(duì)象上
menubtn.config(menu=filemenu)
win.mainloop()

程序運(yùn)行結(jié)果如下:

圖6:Menubutton菜單按鈕

以上就是Python Tkinter Menu控件使用詳解的詳細(xì)內(nèi)容,更多關(guān)于Python Tkinter Menu的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實(shí)現(xiàn)高斯投影正反算方式

    python實(shí)現(xiàn)高斯投影正反算方式

    今天小編就為大家分享一篇python實(shí)現(xiàn)高斯投影正反算方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python 數(shù)據(jù)結(jié)構(gòu)之樹的概念詳解

    Python 數(shù)據(jù)結(jié)構(gòu)之樹的概念詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之樹的概念詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • OpenCV圖像處理之圖像的二值化解讀

    OpenCV圖像處理之圖像的二值化解讀

    這篇文章主要介紹了OpenCV圖像處理之圖像的二值化解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Python函數(shù)屬性和PyC詳解

    Python函數(shù)屬性和PyC詳解

    這篇文章主要介紹了Python函數(shù)屬性和PyC,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • 關(guān)于torch.optim的靈活使用詳解(包括重寫SGD,加上L1正則)

    關(guān)于torch.optim的靈活使用詳解(包括重寫SGD,加上L1正則)

    今天小編就為大家分享一篇關(guān)于torch.optim的靈活使用詳解(包括重寫SGD,加上L1正則),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • tensorflow模型保存、加載之變量重命名實(shí)例

    tensorflow模型保存、加載之變量重命名實(shí)例

    今天小編就為大家分享一篇tensorflow模型保存、加載之變量重命名實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python使用pyecharts繪制世界地圖,省級(jí)地圖,城市地圖實(shí)例詳解

    Python使用pyecharts繪制世界地圖,省級(jí)地圖,城市地圖實(shí)例詳解

    這篇文章主要介紹了如何使用Python中的pyecharts庫繪制世界地圖、中國地圖、省級(jí)地圖、市級(jí)地圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手試一試
    2022-02-02
  • Python圖形用戶界面與游戲開發(fā)實(shí)例詳解

    Python圖形用戶界面與游戲開發(fā)實(shí)例詳解

    GUI是圖形用戶界面的縮寫,圖形化的用戶界面對(duì)使用過計(jì)算機(jī)的人來說應(yīng)該都不陌生,下面這篇文章主要給大家介紹了關(guān)于Python圖形用戶界面與游戲開發(fā)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 利用Python實(shí)現(xiàn)斐波那契數(shù)列的方法實(shí)例

    利用Python實(shí)現(xiàn)斐波那契數(shù)列的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于如何利用Python實(shí)現(xiàn)斐波那契數(shù)列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • python匹配兩個(gè)短語之間的字符實(shí)例

    python匹配兩個(gè)短語之間的字符實(shí)例

    今天小編就為大家分享一篇python匹配兩個(gè)短語之間的字符實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12

最新評(píng)論