pyqt5教程(四)菜單和工具欄

主窗口

QMainWindow類提供了一個應用主窗口。默認創(chuàng)建一個擁有狀態(tài)欄仿吞、工具欄和菜單欄的經(jīng)典應用窗口骨架志珍。
菜單式是于菜單欄的一組命令操作给涕。工具欄是應用窗體中由按鈕和一些常規(guī)命令操作組成的組件鬼佣。狀態(tài)欄是用來顯示狀態(tài)信息的組件驶拱。

一、狀態(tài)欄

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
 
 
class Example(QMainWindow):         #狀態(tài)欄由QMainWindow組件幫助創(chuàng)建完成(依賴于QMainWindow組件)
     
    def __init__(self):
        super().__init__()
         
        self.my_UI()
         
         
    def my_UI(self):              
         
        self.statusBar().showMessage('一切正常')
        #調(diào)用QtWidget.QMainWindow類的statusBar()方法晶衷,得到狀態(tài)欄
        #第一次調(diào)用這個方法創(chuàng)建了一個狀態(tài)欄蓝纲。隨后方法返回狀態(tài)欄對象。然后用showMessage()方法在狀態(tài)欄上顯示一些信息晌纫。

        #self.statusBar()
        #self.statusBar().showMessage('一切正常')

        self.setGeometry(300, 300, 300, 250)
        self.setWindowTitle('狀態(tài)欄')   
        self.show()
 
 
if __name__ == '__main__':
     
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

二驻龟、菜單欄

菜單欄是GUI應用的常規(guī)組成部分。是位于各種菜單中的一組命令操作(Mac OS 對待菜單欄有些不同缸匪。為了獲得全平臺一致的效果,我們可以在代碼中加入一行:menubar.setNativeMenuBar(False))类溢。

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
 
 
class Example(QMainWindow):
     
    def __init__(self):
        super().__init__()
         
        self.my_UI()
         
         
    def my_UI(self):              
         
        exitAction = QAction(QIcon('exit.png'), '&退出', self)    #QAction是一個用于菜單欄凌蔬、工具欄或自定義快捷鍵的抽象動作行為
                                                                  #給該行為顯示為退出露懒,插入圖標
        exitAction.setShortcut('Ctrl+Q')                          #為這個動作定義一個快捷鍵
        exitAction.setStatusTip('退出應用')                       #創(chuàng)建一個當我們鼠標浮于菜單項之上就會顯示的一個狀態(tài)提示
        exitAction.triggered.connect(qApp.quit)                   #當我們選中特定的動作,一個觸發(fā)信號會被發(fā)射砂心。信號連接到QApplication組件的quit()方法懈词。這樣就中斷了應用。當我們選中特定的動作辩诞,一個觸發(fā)信號會被發(fā)射坎弯。信號連接到QApplication組件的quit()方法。這樣就中斷了應用译暂。
 
        self.statusBar()                                          #創(chuàng)建狀態(tài)欄抠忘,用來顯示上面的狀態(tài)提示
 
        menubar = self.menuBar()                                  #menuBar()方法創(chuàng)建了一個菜單欄
        fileMenu = menubar.addMenu('文件&(F)')                       #創(chuàng)建一個文件菜單,設置快捷鍵F
        fileMenu.addAction(exitAction)                            #將退出動作添加到file菜單中
         
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('菜單欄')   
        self.show()
         
         
if __name__ == '__main__':
     
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

菜單欄

三外永、工具欄

菜單可以集成所有命令崎脉,這樣我們可以在應用中使用這些被集成的命令。工具欄提供了一個快速訪問常用命令的方式伯顶。

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
 
 
class Example(QMainWindow):
     
    def __init__(self):
        super().__init__()
         
        self.my_UI()
         
         
    def my_UI(self):              
         
        exitAction = QAction(QIcon('exit.png'), '退出', self)     #創(chuàng)建了一個動作對象囚灼,和上面菜單欄一樣
        exitAction.setShortcut('Ctrl+Q')
        exitAction.triggered.connect(qApp.quit)
         
        self.toolbar = self.addToolBar('Exit')                    #創(chuàng)建了一個名為 Exit 的工具欄
        self.toolbar.addAction(exitAction)                        #在其中插入一個動作對象
         
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('工具欄')   
        self.show()
         
         
if __name__ == '__main__':
     
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

工具欄

四、組合使用

在上面的例子中祭衩,我們創(chuàng)建了菜單欄灶体、工具欄和狀態(tài)欄。下面我們將創(chuàng)建一個中心組件掐暮。

import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication
from PyQt5.QtGui import QIcon
 
 
class Example(QMainWindow):
     
    def __init__(self):
        super().__init__()
         
        self.my_UI()
         
         
    def my_UI(self):              
         
        textEdit = QTextEdit()              #創(chuàng)建一個文本編輯框組件
        self.setCentralWidget(textEdit)     #將它設置成QMainWindow的中心組件蝎抽。中心組件占據(jù)了所有剩下的空間。
 
        exitAction = QAction(QIcon('exit.png'), '退出', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('退出應用')
        exitAction.triggered.connect(self.close)
 
        self.statusBar()
 
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&文件')
        fileMenu.addAction(exitAction)
 
        toolbar = self.addToolBar('Exit')
        toolbar.addAction(exitAction)
         
        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Main window')   
        self.show()
         
         
if __name__ == '__main__':
     
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

該代碼創(chuàng)建了一個帶有菜單欄劫乱、工具欄和狀態(tài)欄的經(jīng)典GUI應用骨架

經(jīng)典GUI應用骨架

(這次按退出連窗口也一起退出了织中?)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市衷戈,隨后出現(xiàn)的幾起案子狭吼,更是在濱河造成了極大的恐慌,老刑警劉巖殖妇,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刁笙,死亡現(xiàn)場離奇詭異,居然都是意外死亡谦趣,警方通過查閱死者的電腦和手機疲吸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來前鹅,“玉大人摘悴,你說我怎么就攤上這事〗⒒妫” “怎么了蹂喻?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵葱椭,是天一觀的道長。 經(jīng)常有香客問我口四,道長孵运,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任蔓彩,我火速辦了婚禮治笨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赤嚼。我一直安慰自己旷赖,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布探膊。 她就那樣靜靜地躺著杠愧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逞壁。 梳的紋絲不亂的頭發(fā)上流济,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音腌闯,去河邊找鬼绳瘟。 笑死,一個胖子當著我的面吹牛姿骏,可吹牛的內(nèi)容都是我干的糖声。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼分瘦,長吁一口氣:“原來是場噩夢啊……” “哼蘸泻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嘲玫,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤悦施,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后去团,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抡诞,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年土陪,在試婚紗的時候發(fā)現(xiàn)自己被綠了昼汗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡鬼雀,死狀恐怖顷窒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情源哩,我是刑警寧澤蹋肮,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布出刷,位于F島的核電站,受9級特大地震影響坯辩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜崩侠,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一漆魔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧却音,春花似錦改抡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夷陋,卻和暖如春欠拾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背骗绕。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工藐窄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酬土。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓荆忍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親撤缴。 傳聞我的和親對象是個殘疾皇子刹枉,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,867評論 25 707
  • Ubuntu的發(fā)音 Ubuntu凉袱,源于非洲祖魯人和科薩人的語言芥吟,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,217評論 9 467
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫专甩、插件钟鸵、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,066評論 4 62
  • 今天看了一本書叫《零極限》這本書,初看有一種感覺就是胡說八道涤躲。細看也有很多值得學習的地方棺耍。書中主要講了如何清理自己...
    五蘊皆空度苦厄閱讀 263評論 0 0
  • 南非博斯茶簡稱為“ROOIBOS茶”。 意思是紅色的灌木种樱。生長在南非200公里以北的賽德伯格地區(qū)蒙袍,在南非俊卤,與“黃金...
    新茶視界閱讀 3,852評論 1 1