中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解Python Tkinter Menu組件

發布時間:2021-10-08 15:25:00 來源:億速云 閱讀:121 作者:iii 欄目:開發技術

本篇內容主要講解“如何理解Python Tkinter Menu組件”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何理解Python Tkinter Menu組件”吧!

目錄
  • 何時使用 Menu 組件?

  • 用法

  • 參數

  • 方法

    • add_cascade(**options)

    • add_checkbutton(**options)

    • add_command(**options)

    • add_radiobutton(**options)

    • add_separator(**options)

    • delete(index1, index2=None)

    • entrycget(index, option)

    • entryconfig(index, **options)

    • entryconfigure(index, **options)

    • index(index)

    • insert(index, itemType, **options)

    • insert_cascade(index, **options)

    • insert_checkbutton(index, **options)

    • insert_command(index, **options)

    • insert_radiobutton(index, **options)

    • insert_separator(index, **options)

    • invoke(index)

    • post(x, y)

    • type(index)

    • unpost()

    • yposition(index)

何時使用 Menu 組件?

Menu 組件通常被用于實現應用程序上的各種菜單,由于該組件是底層代碼實現,所以不建議你自行通過按鈕和其他組件來實現菜單功能。

用法

創建一個頂級菜單,你需要先創建一個菜單實例,然后使用 add() 方法將命令和其它子菜單添加進去:

import tkinter as tk
 
root = tk.Tk()
 
def callback():
        print("~被調用啦~")
 
#創建一個頂級菜單
menubar = tk.Menu(root)
menubar.add_command(label = "Hello", command = callback)
menubar.add_command(label = "Quit", command = root.quit)
 
#顯示菜單
root.config(menu = menubar)
 
root.mainloop()

如何理解Python Tkinter Menu組件

創建一個下拉菜單(或者其他子菜單),方法也是大同小異,最主要的區別是它們最后需要添加到主菜單上(而不是窗口上):

import tkinter as tk
 
root = tk.Tk()
 
def callback():
    print("~被調用了~")
 
# 創建一個頂級菜單
menubar = tk.Menu(root)
 
# 創建一個下拉菜單“文件”,然后將它添加到頂級菜單中
filemenu = tk.Menu(menubar, tearoff=False)
filemenu.add_command(label="打開", command=callback)
filemenu.add_command(label="保存", command=callback)
filemenu.add_separator()
filemenu.add_command(label="退出", command=root.quit)
menubar.add_cascade(label="文件", menu=filemenu)
 
# 創建另一個下拉菜單“編輯”,然后將它添加到頂級菜單中
editmenu = tk.Menu(menubar, tearoff=False)
editmenu.add_command(label="剪切", command=callback)
editmenu.add_command(label="拷貝", command=callback)
editmenu.add_command(label="粘貼", command=callback)
menubar.add_cascade(label="編輯", menu=editmenu)
 
# 顯示菜單
root.config(menu=menubar)
 
root.mainloop()

如何理解Python Tkinter Menu組件

創建一個彈出菜單方法也是一致的,不過需要使用 post() 方法明確的將其顯示出來:

import tkinter as tk
 
root = tk.Tk()
 
def callback():
    print("~被調用了~")
 
# 創建一個彈出菜單
menu = tk.Menu(root, tearoff=False)
menu.add_command(label="撤銷", command=callback)
menu.add_command(label="重做", command=callback)
 
frame = tk.Frame(root, width=512, height=512)
frame.pack()
 
def popup(event):
    menu.post(event.x_root, event.y_root)
 
# 綁定鼠標右鍵
frame.bind("<Button-3>", popup)
 
root.mainloop()

參數

Menu(master=None, **options) (class)

master -- 父組件

**options -- 組件選項,下方表格詳細列舉了各個選項的具體含義和用法:

選項含義
activebackground設置當 Menu 處于 "active" 狀態(通過 state 選項設置狀態)的背景色
activeborderwidth設置當 Menu 處于 "active" 狀態(通過 state 選項設置狀態)的邊框寬度
activeforeground設置當 Menu 處于 "active" 狀態(通過 state 選項設置狀態)的前景色
background設置背景顏色
bg跟 background 一樣
borderwidth指定邊框寬度
bd跟 borderwidth 一樣
cursor指定當鼠標在 Menu 上飄過的時候的鼠標樣式
disabledforeground指定當 Menu 處于 "disabled" 狀態的時候的前景色
font指定 Menu 中文本的字體
foreground設置 Menu 的前景色
fg跟 foreground 一樣
postcommand將此選項與一個方法相關聯,當菜單被打開的時候該方法將自動被調用
relief1. 指定邊框樣式
2. 默認值是 "flat"
3. 另外你還可以設置 "sunken","raised","groove" 或 "ridge"
selectcolor指定當菜單項顯示為單選按鈕或多選按鈕時選擇中標志的顏色
tearoff1. 默認情況下菜單可以被“撕下”(點擊 IDLE 菜單上邊的 --------- 試試)
2. 將該選項設置為 Flase 關閉這一特性
tearoffcommand如果你希望當用戶“撕下”你的菜單時通知你的程序,那么你可以將該選項與一個方法相關聯,那么當用戶“撕下”你的菜單時,Tkinter 會帶著兩個參數去調用你的方法(一個參數是當前窗口的 ID,另一個參數是承載被“撕下”的菜單的窗口 ID)
title默認情況下,被“撕下”的菜單標題是其主菜單的名字,不過你也可以通過修改此項的值來修改標題

方法

add(type, **options)

-- type 參數指定添加的菜單類型,可以是:"command","cascade","checkbutton","radiobutton" 或 "separator"

-- 還可以通過 options 選項設置菜單的屬性,下表列舉了 options 可以使用的選項和具體含義:

選項含義
accelerator1. 顯示該菜單項的加速鍵(快捷鍵)
2. 例如 accelerator = "Ctrl+N"
3. 該選項僅顯示,并沒有實現加速鍵的功能(通過按鍵綁定實現)
activebackground設置當該菜單項處于 "active" 狀態(通過 state 選項設置狀態)的背景色
activeforeground設置當該菜單項處于 "active" 狀態(通過 state 選項設置狀態)的前景色
background設置該菜單項的背景顏色
bitmap指定顯示到該菜單項上的位圖
columnbreak從該菜單項開始另起一列顯示
command將該選項與一個方法相關聯,當用戶點擊該菜單項時將自動調用此方法
compound1. 控制菜單項中文本和圖像的混合模式
2. 如果該選項設置為 "center",文本顯示在圖像上(文本重疊圖像)
3. 如果該選項設置為 "bottom","left","right" 或 "top",那么圖像顯示在文本的旁邊(如 "bottom",則圖像在文本的下方
font指定文本的字體
foreground設置前景色
hidemargin是否顯示菜單項旁邊的空白
image1. 指定菜單項顯示的圖片
2. 該值應該是 PhotoImage,BitmapImage,或者能兼容的對象
label指定菜單項顯示的文本
menu1. 該選項僅在 cascade 類型的菜單中使用
2. 用于指定它的下級菜單
offvalue1. 默認情況下,variable 選項設置為 1 表示選中狀態,反之設置為 0
2. 設置 offvalue 的值可以自定義未選中狀態的值
onvalue1. 默認情況下,variable 選項設置為 1 表示選中狀態,反之設置為 0
2. 設置 onvalue 的值可以自定義選中狀態的值
selectcolor指定當菜單項顯示為單選按鈕或多選按鈕時選擇中標志的顏色
selectimage如果你在單選按鈕或多選按鈕菜單中使用圖片代替文本,那么設置該選項指定被菜單項被選中時顯示的圖片
state1. 跟 text 選項一起使用,用于指定哪一個字符畫下劃線(例如用于表示鍵盤快捷鍵)
underline1. 用于指定在該菜單項的某一個字符處畫下劃線
2. 例如設置為 1,則說明在該菜單項的第 2 個字符處畫下劃線
value1. 當菜單項為單選按鈕時,用于標志該按鈕的值
2. 在同一組中的所有按鈕應該擁有各不相同的值
3. 通過將該值與 variable 選項的值對比,即可判斷用戶選中了哪個按鈕
4. 如在使用上有不懂具體可以參照 Radiobutton 組件的說明
variable1. 當菜單項是單選按鈕或多選按鈕時,與之關聯的變量
2. 如在使用上有不懂具體可以參照:Checkbutton 和 Radiobutton 組件的說明

add_cascade(**options)

-- 添加一個父菜單

-- 相當于 add("cascade", **options)

add_checkbutton(**options)

-- 添加一個多選按鈕的菜單項

-- 相當于 add("checkbutton", **options)

add_command(**options)

-- 添加一個普通的命令菜單項

-- 相當于 add("command", **options)

add_radiobutton(**options)

-- 添加一個單選按鈕的菜單項

-- 相當于 add("radiobutton", **options)

add_separator(**options)

-- 添加一條分割線

-- 相當于 add("separator", **options)

delete(index1, index2=None)

-- 刪除 index1 ~ index2(包含)的所有菜單項

-- 如果忽略 index2 參數,則刪除 index1 指向的菜單項

-- 注意:對于一個被“撕下”的菜單,你無法使用該方法

entrycget(index, option)

-- 獲得指定菜單項的某選項的值

entryconfig(index, **options)

-- 設置指定菜單項的選項

-- 選項的參數及具體含義請參考上方 add() 方法

entryconfigure(index, **options)

-- 跟 entryconfig() 一樣

index(index)

-- 返回與 index 參數相應的選項的序號(例如 e.index("end"))

insert(index, itemType, **options)

-- 插入指定類型的菜單項到 index 參數指定的位置

-- itemType 參數指定添加的菜單類型,可以是:"command","cascade","checkbutton","radiobutton" 或 "separator"

-- 選項的參數及具體含義請參考上方 add() 方法

insert_cascade(index, **options)

-- 在 index 參數指定的位置添加一個父菜單

-- 相當于 insert("cascade", **options)

insert_checkbutton(index, **options)

-- 在 index 參數指定的位置添加一個多選按鈕

-- 相當于 insert("checkbutton", **options)

insert_command(index, **options)

-- 在 index 參數指定的位置添加一個普通的命令菜單項

-- 相當于 insert("command", **options)

insert_radiobutton(index, **options)

-- 在 index 參數指定的位置添加一個單選按鈕

-- 相當于 insert("radiobutton", **options)

insert_separator(index, **options)

-- 在 index 參數指定的位置添加一條分割線

-- 相當于 insert("separator", **options)

invoke(index)

-- 調用 index 指定的菜單項相關聯的方法

-- 如果是單選按鈕,設置該菜單項為選中狀態

-- 如果是多選按鈕,切換該菜單項的選中狀態

post(x, y)

-- 在指定的位置顯示彈出菜單

-- 參考上方【用法】中的創建彈窗菜單的例子

type(index)

-- 獲得 index 參數指定菜單項的類型

-- 返回值可以是:"command","cascade","checkbutton","radiobutton" 或 "separator"

unpost()

-- 移除彈出菜單、

yposition(index)

-- 返回 index 參數指定的菜單項的垂直偏移位置

-- 該方法的目的是為了讓你精確放置相對于當前鼠標的位置彈出菜單

到此,相信大家對“如何理解Python Tkinter Menu組件”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南昌县| 砚山县| 栖霞市| 鄂伦春自治旗| 利津县| 耿马| 安龙县| 五河县| 改则县| 集贤县| 西林县| 清苑县| 五大连池市| 尼勒克县| 盐城市| 紫阳县| 昌黎县| 宜都市| 同德县| 金塔县| 囊谦县| 塘沽区| 维西| 高雄市| 三原县| 贵阳市| 宜州市| 洞头县| 阳城县| 会理县| 唐河县| 桐乡市| 大理市| 敦化市| 固镇县| 元谋县| 含山县| 彭州市| 阿瓦提县| 邵阳市| 玉林市|