[Python自學] PyQT5-菜單欄、工具欄、狀態欄


一、菜單欄

手工使用代碼創建菜單欄主要有以下步驟:

1)創建一個獲取窗口的menuBar實例(這個實例是MainWindow的成員屬性)

2)在menuBar中添加Menu

3)在Menu中添加Actions

4)為Actions綁定triggered事件

菜單欄Demo:

import sys

# 導入QT,其中包含一些常量,例如顏色等
from PyQt5.QtCore import Qt
# 導入常用組件
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWidgets import QAction
# 使用調色板等
from PyQt5.QtGui import QIcon


class DemoWin(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.resize(400, 250)
        # 獲取QMainWindow的MenuBar對象
        bar = self.menuBar()
        # 在menuBar上添加文件菜單
        file = bar.addMenu("文件")
        new = QAction("新建 (&N)", self)
        open = QAction("打開 (&O)", self)
        save = QAction("保存", self)
        # 為一個Action設置快捷鍵
        save.setShortcut("Ctrl + S")
        saveAt = QAction("另存為", self)
        file.addAction(new)
        file.addAction(open)
        file.addAction(save)
        file.addAction(saveAt)
        # 為文件-->保存綁定槽函數
        save.triggered.connect(self.saveProcess)

        # 在menuBar上添加編輯菜單
        edit = bar.addMenu("編輯")
        edit.addAction("復制")
        edit.addAction("剪切")
        edit.addAction("粘貼")
        # 在編輯菜單中添加一個其他操作菜單,其中包含多個QAction
        others = edit.addMenu("其他操作")
        others.addAction("A操作")
        others.addAction("B操作")
        others.addAction("B操作")

        quit = QAction("退出", self)
        # 文件-->退出,綁定窗口的close槽
        quit.triggered.connect(self.close)
        file.addAction(quit)

        # 添加窗口標題
        self.setWindowTitle("MenuDemo")

    def saveProcess(self):
        print("保存")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon("images/icon.ico"))
    # 創建一個主窗口
    mainWin = DemoWin()
    # 顯示
    mainWin.show()
    # 主循環
    sys.exit(app.exec_())

實現效果:

二、工具欄

要使用工具欄,需要以下步驟:

1)在QMainWindow中添加一個工具欄 addToolBar()

2)在toolBar中添加Action(Action可以指定圖標和名稱,默認只顯示圖標,名稱以tip的方式顯示)

import sys

# 導入QT,其中包含一些常量,例如顏色等
from PyQt5.QtCore import Qt
# 導入常用組件
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWidgets import QAction, QMenu, QActionGroup
# 使用調色板等
from PyQt5.QtGui import QIcon


class DemoWin(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.resize(400, 250)

        # 創建一個toolBar,用於放置文件操作
        fileBar = self.addToolBar("File")
        new = QAction(QIcon('./images/new.jpg'), "新建", self)  # 指定了圖標默認顯示圖標
        fileBar.addAction(new)
        open = QAction(QIcon('./images/open.jpg'), "打開", self)
        fileBar.addAction(open)
        fileBar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)  # 設置名稱顯示在圖標下面(默認本來是只顯示圖標)

        fileBar.actionTriggered.connect(self.toolbtnpressed)

        # 創建另一個toolbar,用於放置編輯操作
        editBar = self.addToolBar("Edit")
        copy = QAction("復制", self)  # 沒有指定圖標,默認顯示名稱
        editBar.addAction(copy)
        paste = QAction("粘貼", self)
        editBar.addAction(paste)# 添加窗口標題
        self.setWindowTitle("ToolBarDemo")

    def toolbtnpressed(self, a):
        print("按下的ToolBar按鈕是", a.text())  # 打印點擊的按鈕名稱


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon("images/icon.ico"))
    # 創建一個主窗口
    mainWin = DemoWin()
    # 顯示
    mainWin.show()
    # 主循環
    sys.exit(app.exec_())

實現效果:

 

三、狀態欄

狀態欄存在於窗口的最下方,用於顯示信息。

Demo:

import sys

# 導入QT,其中包含一些常量,例如顏色等
from PyQt5.QtCore import Qt
# 導入常用組件
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5.QtWidgets import QAction, QStatusBar
# 使用調色板等
from PyQt5.QtGui import QIcon


class DemoWin(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.resize(400, 250)
        fileBar = self.addToolBar("File")
        new = QAction(QIcon('./images/new.jpg'), "新建", self)
        fileBar.addAction(new)
        open = QAction(QIcon('./images/open.jpg'), "打開", self)
        fileBar.addAction(open)
        fileBar.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
        fileBar.actionTriggered.connect(self.toolbtnpressed)
        editBar = self.addToolBar("Edit")
        copy = QAction("復制", self)
        editBar.addAction(copy)
        paste = QAction("粘貼", self)
        editBar.addAction(paste)

        # 定義一個狀態欄,並添加到窗口上
        self.statusBar = QStatusBar() self.setStatusBar(self.statusBar) # 添加窗口標題
        self.setWindowTitle("StatusBarDemo")

    def toolbtnpressed(self, a):
        self.statusBar.showMessage(a.text() + "按鈕被點擊了.", 2000)  # 2000表示顯示2s消失


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon("images/icon.ico"))
    # 創建一個主窗口
    mainWin = DemoWin()
    # 顯示
    mainWin.show()
    # 主循環
    sys.exit(app.exec_())

實現效果:

 

 

====


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM