一、菜單欄
手工使用代碼創建菜單欄主要有以下步驟:
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_())
實現效果:
====