《PyQT5軟件開發(fā) - 基礎(chǔ)篇》第4章 PyQt5菜單和工具欄

4.1主窗口

QMainWindow 類提供了一個主要的應(yīng)用程序窗口捞烟。你用它可以讓應(yīng)用程序添加狀態(tài)欄,工具欄和菜單欄。

4.2狀態(tài)欄

狀態(tài)欄用于顯示狀態(tài)信息苹粟。

# -*- coding: utf-8 -*-
"""
author: BruceOu
last edited: 2020-06
"""
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication
 
class Statusbar(QMainWindow):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
    def initUI(self):               
        
        self.statusBar().showMessage('Ready')
        
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Statusbar')    
        self.show()
 
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Statusbar()
    sys.exit(app.exec_())

你用QMainWindow創(chuàng)建狀態(tài)欄的小窗口。

self.statusBar().showMessage('Ready')

QMainWindow類第一次調(diào)用statusBar()方法創(chuàng)建一個狀態(tài)欄。后續(xù)調(diào)用返回的狀態(tài)欄對象滑燃。showMessage()狀態(tài)欄上顯示一條消息。

4.3菜單欄

菜單欄是常見的窗口應(yīng)用程序的一部分颓鲜。(Mac OS將菜單條不同表窘。得到類似的結(jié)果,我們可以添加以下行:menubar.setNativeMenuBar(假)。)

# -*- coding: utf-8 -*-
"""
author: BruceOu
last edited: 2020-06
"""
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
 
 
class Menubar(QMainWindow):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):               
        
        exitAction = QAction(QIcon('exit.png'), '&Exit', self)        
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(qApp.quit)
 
        self.statusBar()
 
        #創(chuàng)建一個菜單欄
        menubar = self.menuBar()
        #添加菜單
        fileMenu = menubar.addMenu('&File')
        #添加事件
        fileMenu.addAction(exitAction)
        
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Menubar')    
        self.show()
        
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Menubar()
    sys.exit(app.exec_())  

在上面的例子中,我們創(chuàng)建一個菜單欄和一個菜單甜滨。這個菜單將終止應(yīng)用程序乐严。Ctrl + Q的行動是可訪問的快捷方式。

exitAction = QAction(QIcon('exit.png'), '&Exit', self)        
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')

QAction可以操作菜單欄,工具欄,或自定義鍵盤快捷鍵衣摩。上面三行,我們創(chuàng)建一個事件和一個特定的圖標(biāo)和一個“退出”的標(biāo)簽昂验。然后,在定義該操作的快捷鍵。

第三行創(chuàng)建一個鼠標(biāo)指針懸停在該菜單項上時的提示艾扮。

exitAction.triggered.connect(qApp.quit)

當(dāng)我們點擊菜單的時候既琴,調(diào)用qApp.quit,終止應(yīng)用程序。

4.4工具欄

工具欄提供了一個快速訪問的入口栏渺。

# -*- coding: utf-8 -*-
"""
author: BruceOu
last edited: 2020-06
"""
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
 
 
class Toolbar(QMainWindow):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):               
        
        exitAction = QAction(QIcon('exit.png'), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.triggered.connect(qApp.quit)
        
        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAction)
        
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Toolbar')    
        self.show()
        
        
if __name__ == '__main__':
    
    app = QApplication(sys.argv)
    ex = Toolbar()
    sys.exit(app.exec_())

在上面的例子中,我們創(chuàng)建一個簡單的工具欄呛梆。工具欄有有一個按鈕,點擊關(guān)閉窗口。

exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.triggered.connect(qApp.quit)

類似于上面的菜單欄的例子,我們創(chuàng)建一個QAction事件磕诊。該事件有一個標(biāo)簽填物、圖標(biāo)和快捷鍵纹腌。退出窗口的方法。

4.5綜合運用

在本節(jié)的最后一個例子中,我們將創(chuàng)建一個菜單條,工具欄和狀態(tài)欄的小窗口

# -*- coding: utf-8 -*-
"""
author: BruceOu
last edited: 2020-06
"""
import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication
from PyQt5.QtGui import QIcon
 
 
class All(QMainWindow):
    
    def __init__(self):
        super().__init__()
        
        self.initUI()
        
        
    def initUI(self):               
        
        textEdit = QTextEdit()
        self.setCentralWidget(textEdit)
 
        exitAction = QAction(QIcon('exit.png'), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(self.close)
 
        self.statusBar()
 
        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        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 = All()
    sys.exit(app.exec_())

資源獲取方法

1.關(guān)注公眾號[AI實驗樓]

2.在公眾號回復(fù)關(guān)鍵詞[PyQt5]獲取資料提取碼

歡迎訪問我的網(wǎng)站

BruceOu的嗶哩嗶哩
BruceOu的主頁
BruceOu的博客
BruceOu的CSDN博客
BruceOu的簡書
BruceOu的知乎

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滞磺,一起剝皮案震驚了整個濱河市升薯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌击困,老刑警劉巖涎劈,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異阅茶,居然都是意外死亡蛛枚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門脸哀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹦浦,“玉大人,你說我怎么就攤上這事撞蜂∶は猓” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵蝌诡,是天一觀的道長溉贿。 經(jīng)常有香客問我,道長浦旱,這世上最難降的妖魔是什么宇色? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮闽寡,結(jié)果婚禮上代兵,老公的妹妹穿的比我還像新娘。我一直安慰自己爷狈,他們只是感情好植影,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著涎永,像睡著了一般思币。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上羡微,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天谷饿,我揣著相機與錄音,去河邊找鬼妈倔。 笑死博投,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盯蝴。 我是一名探鬼主播毅哗,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼听怕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了虑绵?” 一聲冷哼從身側(cè)響起尿瞭,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎翅睛,沒想到半個月后声搁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡捕发,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年疏旨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扎酷。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡充石,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出霞玄,到底是詐尸還是另有隱情,我是刑警寧澤拉岁,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布坷剧,位于F島的核電站,受9級特大地震影響喊暖,放射性物質(zhì)發(fā)生泄漏惫企。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一陵叽、第九天 我趴在偏房一處隱蔽的房頂上張望狞尔。 院中可真熱鬧,春花似錦巩掺、人聲如沸偏序。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽研儒。三九已至,卻和暖如春独令,著一層夾襖步出監(jiān)牢的瞬間端朵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工燃箭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留冲呢,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓招狸,卻偏偏與公主長得像敬拓,于是被迫代替她去往敵國和親邻薯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

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