學習筆記(56):Python實戰編程-Menu

立即學習:https://edu.csdn.net/course/play/19711/343119?utm_source=blogtoedu

1.菜單menu:

1)彈出式菜單,類似與電腦桌面右擊彈出的菜單成為彈出菜單;

2)窗體式菜單:類似于word上面的菜單欄

?

2.窗體菜單創建的步驟

1)創建一個菜單欄

elf.menu = tkinter.Menu(self.root)#創建菜單

2)在菜單欄中創建子菜單

        self.file_menu = tkinter.Menu(self.menu,#主菜單tearoff = False)

3)給子菜單添加菜單項及設置菜單項的名字和需要綁定的事件,

注:關閉窗體的事件可以直接調用self.root.quit()來實現

        self.file_menu.add_command(label = "打開",#設置子菜單項的名字command = self.file_handle_1#設置子菜單項需要執行的事件)self.file_menu.add_command(label = "保存",#設置菜單項的名字command = self.file_handle_2#設置子菜單項需要執行的事件)self.file_menu.add_separator()#添加子菜單項分割線self.file_menu.add_command(label = "關閉",#設置子菜單項的名字command = self.root.quit#設置子菜單項需要執行的事件

4)向菜單欄或者主菜單中添加子菜單

 #---------------------將子菜單添加到主菜單中----------------------
self.menu.add_cascade(label = "文件",#為子菜單設置名字menu = self.file_menu#將子菜單添加到主菜單中,需要添加的子菜單)

?5)在窗體中顯示主菜單或者說是菜單欄

self.root.config(menu = self.menu)

?

3.彈出菜單的創建步驟

1)創建子菜單:這步與窗體菜單的創建子菜單是一樣的

self.popmenu = tkinter.Menu(self.root,tearoff = False)#創建菜單

2)給子菜單添加菜單項及菜單項的命名、事件的綁定

        self.popmenu.add_command(label = "我是彈出菜單",#彈出菜單項的名字command = self.pop_handle_1#彈出菜單項綁定的事件)

3)定義在窗體中顯示彈出窗體的事件(post)

#--------------彈出菜單事件---------------------
def pop_menu_handle(self,event):self.popmenu.post(event.x_root,event.y_root)#設置彈出的位置,這是跟隨著事件發生的位置

4)給窗體綁定彈出菜單彈出的事件

self.root.bind("<Button-3>",self.pop_menu_handle)#將彈出菜單作為一個事件綁定給窗體

?

注:菜單項事件的綁定是通過創建菜單項“command=事件”來進行綁定的

?

4.完整代碼

import tkinter#導入創建窗體的相關模塊class Mainwindow():#創建窗口類def __init__(self):self.root = tkinter.Tk()#創建主體窗口self.root.title('linlianqin')#定義窗體的名字self.root.geometry('500x500')#定義窗體的初始大小self.root.maxsize(1200,1200)#設置窗口可以顯示的最大尺寸self.create_menu()self.pop_menu()self.root.bind("<Button-3>",self.pop_menu_handle)#將彈出菜單作為一個事件綁定給窗體self.root.mainloop()#顯示窗口,這個代碼一定要放在所有窗口設置的后面#------------創建窗體菜單------------------def create_menu(self):self.menu = tkinter.Menu(self.root)#創建菜單#-------------------------------------#創建一個子菜單1------------------------------------self.file_menu = tkinter.Menu(self.menu,#主菜單tearoff = False)#----------------創建子菜單的菜單項1-----------------self.file_menu.add_command(label = "打開",#設置子菜單項的名字command = self.file_handle_1#設置子菜單項需要執行的事件)self.file_menu.add_command(label = "保存",#設置菜單項的名字command = self.file_handle_2#設置子菜單項需要執行的事件)self.file_menu.add_separator()#添加子菜單項分割線self.file_menu.add_command(label = "關閉",#設置子菜單項的名字command = self.root.quit#設置子菜單項需要執行的事件)#關閉窗口的事件可以直接調用內置的函數#---------------------將子菜單添加到主菜單中----------------------self.menu.add_cascade(label = "文件",#為子菜單設置名字menu = self.file_menu#將子菜單添加到主菜單中,需要添加的子菜單)#---------------------------------# 創建一個子菜單2------------------------------self.edit_menu = tkinter.Menu(self.menu, #主菜單tearoff=False)#----------------創建子菜單的菜單項2-----------------self.edit_menu.add_command(label = "剪切",#設置子菜單項的名字command = self.edit_handle_1#設置子菜單項需要執行的事件)self.edit_menu.add_command(label = "復制",#設置菜單項的名字command = self.edit_handle_2#設置子菜單項需要執行的事件)self.edit_menu.add_separator()#添加子菜單項分割線self.edit_menu.add_command(label = "粘貼",#設置子菜單項的名字command = self.edit_handle_2#設置子菜單項需要執行的事件)#---------------------將子菜單添加到主菜單中----------------------self.menu.add_cascade(label = "編輯",#為子菜單設置名字menu = self.edit_menu#將子菜單添加到主菜單中,需要添加的子菜單)#---------------------主菜單的顯示------------------self.root.config(menu = self.menu)#-------創建彈出菜單:彈出菜單就相當于一個子菜單一樣,只不過是需要右擊才會出現的,對于窗體來說,彈出菜單相當于一個事件----------------------def pop_menu(self):self.popmenu = tkinter.Menu(self.root,tearoff = False)#創建菜單self.popmenu.add_command(label = "我是彈出菜單",#彈出菜單項的名字command = self.pop_handle_1#彈出菜單項綁定的事件)self.popmenu.add_command(label = "linlianqin",#彈出菜單項的名字command = self.pop_handle_2#彈出菜單項綁定的事件)#---------------------窗體菜單的處理事件------------------------def file_handle_1(self):passdef file_handle_2(self):passdef edit_handle_1(self):passdef edit_handle_2(self):pass#---------------------彈出菜單的處理事件------------------------def pop_handle_1(self):passdef pop_handle_2(self):pass#--------------彈出菜單事件---------------------def pop_menu_handle(self,event):self.popmenu.post(event.x_root,event.y_root)#設置彈出的位置,這是跟隨著事件發生的位置if __name__ == '__main__':Mainwindow()#將窗體類實例化

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256800.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SystemCenter2012SP1實踐(19)集成WSUS更新服務器2012

今天我們的任務是配置一臺WSUS&#xff08;Windows更新服務器&#xff09;&#xff0c;以方便后期通過"基線"與其組合&#xff0c;完成虛擬機的系統補丁升級。WSUS是Windows系統運維自動化的一個重要組成部分&#xff0c;通過它&#xff0c;能夠節省我們很多的運維時…

像元尺寸計算

像元尺寸 X 總像素大小 感光芯片尺寸&#xff08;圖像區域大小&#xff09;

win7右鍵點擊文件夾進入命令窗口方法

方法一&#xff1a;按住shift鍵&#xff0c;鼠標右擊&#xff0c;會出現"在此處打開命令窗口"&#xff1b;方法二&#xff1a;修改注冊表&#xff0c;為鼠標右鍵添加打開命令行功能&#xff1b;(1)將下列內容賦值到記事本中&#xff0c;并保存為.reg文件。Windows Re…

教你學會Linux/Unix下的vi文本編輯器

vi編輯器是Unix/Linux系統管理員必須學會使用的編輯器。看了不少關于vi的資料&#xff0c;終于得到這個總結。首先&#xff0c;記住vi編輯器的兩個模式&#xff1a;1、命令模式2、編輯模式。在一個UNIX/Linux的shell命令或者一個以斜杠&#xff08;/&#xff09;、問號&#xf…

C++函數返回引用的含義

引用的意思就是說返回變量的地址而非變量本身。這樣子函double數結束之后存儲返回值的內存單元不會被銷毀&#xff0c;保留了它的地址。 例如下面這個例子: int a1,b; ba; b; 這個例子里執行完之后a為1&#xff0c;而b為2。 但這個例子&#xff1a; int a1; int *b&#xff1b;…

LintCode: 3 Sum

C 把3個數求和&#xff0c;轉變為2個數求和 1. 把數組排序 2. 注意過濾重復值 3. 從前到后遍歷&#xff0c;游標i 4. 從后邊數中找start &#xff0b; end &#xff1d; -arr[i]的2 sum 5. start &#xff0b; end < -arr[i], start 6. start end > -arr[i], end-- 7. s…

$* $@ $# $? $$ $! $0 $_

特殊參數&#xff1a; [xiluhuavm-xiluhua][~]$ set one two three  #使用set命令設置位置參數[xiluhuavm-xiluhua][~]$ echo $*        #打印所有位置參數 one two three[xiluhuavm-xiluhua][~]$ echo $        #打印所有位置參數 one two three[xiluhuavm-…

最優化課堂筆記03:整數規劃

二、整數規劃問題的求解方法&#xff1a;&#xff08;重點&#xff1a;分枝定界法&#xff09; 1.割平面法 1&#xff09;基本思想 2&#xff09;求解步驟 2&#xff09;重點&#xff1a;分枝定界法&#xff08;極大化的問題&#xff09;考試不會分很多次枝&#xff0c;用圖解…

CodeIgniter 2.X 于 PHP5.6 兼容錯誤

本篇文章由&#xff1a;http://xinpure.com/codeigniter-2-x-to-php5-6-compatible-error/ CI 3.0 已兼容此問題 在代碼遷移的過程中&#xff0c;遇到了一個 PHP 版本兼容錯誤 A PHP Error was encounteredSeverity: NoticeMessage: Only variable references should be return…

自動駕駛汽車定位技術

一、高精度地圖 二、汽車定位技術 三、無線通信輔助汽車定位 四、視覺輔助汽車定位 五、自動駕駛高精度地圖與定位實踐

正整數分解為幾個連續自然數之和

題目&#xff1a;輸入一個正整數&#xff0c;若該數能用幾個連續正整數之和表示&#xff0c;則輸出所有可能的正整數序列。 一個正整數有可能可以被表示為n(n>2)個連續正整數之和&#xff0c;如&#xff1a; 1512345 15456 1578 有些數可以寫成連續N&#xff08;>1&#…

egret3D與2D混合開發,畫布尺寸不一致的問題

egret3d的GUI目前還沒有&#xff0c;在做3d游戲的時候沒有UI可用&#xff0c;只能使用egret2d的EUI組件庫&#xff0c;egret3d與egret2d混合開發&#xff0c;canvas3d的大小與位置與canvas2d并沒有重合&#xff0c;導致適配ui時總是錯位。在做手機屏幕適配的時候必須解決這種問…

最優化作業講解01:標準化線性規劃(LP)

1.1、錯誤點&#xff1a;求得了目標函數最優解&#xff0c;但是沒有將結果返回去最大值 2.4、錯誤點&#xff1a;x2變量的處理上&#xff0c;x2不是任意變量不可以按照任意變量來進行變換 x6 x2 5&#xff0c;且x6>0 2.9、 易錯點&#xff1a; 1&#xff09;基變量要滿足…

hdu1428(spfa與記憶化搜索)

漫步校園 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3508 Accepted Submission(s): 1066Problem DescriptionLL最近沉迷于AC不能自拔&#xff0c;每天寢室、機房兩點一線。由于長時間坐在電腦邊&#xff…

explicit關鍵字詳解(C++ )

一&#xff1a;首先, C中的explicit關鍵字只能用于修飾只有一個參數的類構造函數, 它的作用是表明該構造函數是顯示的, 而非隱式的, 跟它相對應的另一個關鍵字是implicit, 意思是隱藏的,類構造函數默認情況下即聲明為implicit(隱式). class CxString // 沒有使用explicit關鍵…

React Native 常見問題集合

在使用React Native時候&#xff0c;我記錄下比較常遇到的問題&#xff0c;分為以下幾類&#xff1a; 1. 調試問題 2. 寫法問題 3. 疑難問題 4. 奇怪問題 調試問題 1. 在react-native run-android運行后&#xff0c;真機上打開的空白頁面。 我測試機是紅米2A&#xff08;Androi…

算法:字符串消除問題的數學證明

問題&#xff1a; 給定一個字符串&#xff0c;僅由A、B、C3個字母組成。當出現連續兩個不同的字母時&#xff0c;你可以用另外一個字母替換它&#xff0c;如有AB或BA連續出現&#xff0c;你把它們替換為字母C&#xff1b;有AC或CA連續出現時&#xff0c;你可以把它們替換為字母…

學習筆記(57):Python實戰編程-Treeview

立即學習:https://edu.csdn.net/course/play/19711/343120?utm_sourceblogtoedu 1.樹狀結構Treeview:分為樹狀折疊式列表和列表顯示&#xff0c;是一種很重要數據列表展示的形式 2.樹狀列表建立步驟&#xff1a; 1&#xff09;創建一個樹狀列表&#xff1a;在這里可以設置顯示…

ios 常用操作-1

項目中可能會用到的一些技巧方法&#xff0c;做個記錄&#xff0c;已被不時之需。 一。程序在運行過程中不鎖屏&#xff1f; [UIApplication sharedApplication].idleTimerDisabledYES; 二。顯示被view 或 control遮蓋的背景內容。比如有時在不同的ios版本上 tableview cell上畫…

(視覺和激光傳感器)SLAM 做室內GPS與室外真實GPS在無人機上的對比

1、室外無人機GPS的作用 1&#xff09;記錄實時無人機起飛點與當前飛行無人機的絕對位置關系&#xff0c;顯示當面無人機離起飛點的真實距離 2&#xff09;做室外無人機懸停的功能&#xff0c;使用GPS當前點與懸停點GPS經緯度做對比 3&#xff09;無人機上層應用&#xff0c…