Python 3 – Tkinter菜單
Tkinter是Python標準庫中內置的圖形用戶界面(GUI)庫,可以快速構建簡單的GUI界面。愛掏網 - it200.comTkinter提供了菜單(Menus)的構建和管理功能。愛掏網 - it200.com本文將介紹Tkinter菜單的基本使用方法。愛掏網 - it200.com
Tkinter提供了三種菜單類型:
– 普通菜單:包含一系列的命令項。愛掏網 - it200.com
– 級聯菜單:是普通菜單的一種擴展,其中每一項是另一個子菜單。愛掏網 - it200.com
– 彈出菜單:在鼠標右鍵點擊時顯示的短暫菜單。愛掏網 - it200.com
創建一個簡單的菜單
以下是一個基本的菜單代碼:
from tkinter import *
root = Tk()
menu = Menu(root)
root.config(menu=menu)
# 創建一個File菜單項
file_menu = Menu(menu)
menu.add_cascade(label='File', menu=file_menu)
file_menu.add_command(label='New')
file_menu.add_command(label='Open...')
file_menu.add_separator()
file_menu.add_command(label='Exit', command=root.quit)
# 創建一個Help菜單項
help_menu = Menu(menu)
menu.add_cascade(label='Help', menu=help_menu)
help_menu.add_command(label='About')
root.mainloop()
這個菜單窗口包含了兩個級聯菜單,分別是File
和Help
。愛掏網 - it200.comFile
下面包含了三個命令項以及一個分隔符和一個退出按鈕。愛掏網 - it200.comHelp
下面僅有一個About
命令項。愛掏網 - it200.com
接下來我們將逐一解釋這個簡單的菜單實現代碼。愛掏網 - it200.com
首先,我們需要導入Tkinter庫,并創建一個Tk()
對象:
from tkinter import *
root = Tk()
接著,創建一個菜單對象Menu
,并將其配置到窗口上:
menu = Menu(root)
root.config(menu=menu)
創建一個普通菜單項File
,再添加三個命令項和一個分隔符。愛掏網 - it200.com需要注意的是,命令項的函數需要定義在代碼前面。愛掏網 - it200.com
# 創建一個File菜單項
file_menu = Menu(menu)
menu.add_cascade(label='File', menu=file_menu)
file_menu.add_command(label='New')
file_menu.add_command(label='Open...')
file_menu.add_separator()
file_menu.add_command(label='Exit', command=root.quit)
創建一個級聯菜單項Help
,并添加唯一的About
命令項。愛掏網 - it200.com
# 創建一個Help菜單項
help_menu = Menu(menu)
menu.add_cascade(label='Help', menu=help_menu)
help_menu.add_command(label='About')
通過以上幾步,就可以快速創建一個簡單的菜單。愛掏網 - it200.com
創建一個彈出菜單
以下是一個簡單的彈出菜單代碼:
from tkinter import *
root = Tk()
def popup(event):
popup_menu.post(event.x_root, event.y_root)
menu = Menu(root, tearoff=False)
menu.add_command(label='Undo')
menu.add_command(label='Redo')
menu.add_separator()
menu.add_command(label='Cut')
menu.add_command(label='Copy')
menu.add_command(label='Paste')
root.bind('<Button-3>', popup)
popup_menu = menu
root.mainloop()
對于popup()
函數,我們需要使用.post()
方法來彈出菜單。愛掏網 - it200.com如果我們定義了多個彈出菜單,可以將其中一個賦值到一個全局變量中便于復用。愛掏網 - it200.com
def popup(event):
popup_menu.post(event.x_root, event.y_root)
# ...
popup_menu = menu
菜單項分隔符
上面的例子中,在菜單項之間加了一個分隔符。愛掏網 - it200.com分隔符可以使用add_separator()
方法來添加。愛掏網 - it200.com
file_menu = Menu(menu)
menu.add_cascade(label='File', menu=file_menu)
file_menu.add_command(label='New')
file_menu.add_command(label='Open...')
file_menu.add_separator()
file_menu.add_command(label='Exit', command=root.quit)
同樣,在級聯菜單中也可以使用這個方法:
help_menu.add_separator()
禁用菜單項
有時,我們需要在某些情況下禁用某個菜單項。愛掏網 - it200.com可以使用state='disabled'
參數來達到這個目的。愛掏網 - it200.com