一、菜单栏
手工使用代码创建菜单栏主要有以下步骤:
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_())
实现效果:
====