菜单栏menuBar
主要方法
menuBar() | 返回主窗口的QMenuBar对象 |
addMenu() | 在菜单栏中添加一个新的QMenu对象 |
addAction() | 向QMenu小控件中添加一个操作按钮,其中包含文本或图标 |
setEnabled() | 将操作按钮状态设置为启用/禁用 |
addSeperator() | 在菜单中添加一条分隔线 |
clear() | 删除菜单/菜单栏的内容 |
setShortcut() | 将快捷键关联到操作按钮 |
setText() | 设置菜单项的文本 |
setTitle() | 设置QMenu小控件的标题 |
text() | 返回与QAction对象关联的文本 |
title() | 返回QMenu小控件的标题 |
单击任何QAction按钮时,QMenu对象都会发射triggered信号。
代码示例
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MenuDemo(QMainWindow):
def __init__(self, parent=None):
super(MenuDemo, self).__init__(parent)
layout = QHBoxLayout()
bar = self.menuBar()
file = bar.addMenu("File")
file.addAction("New")
save = QAction("Save", self)
save.setShortcut("Ctrl+S")
file.addAction(save)
edit = file.addMenu("Edit")
edit.addAction("copy")
edit.addAction("paste")
quit = QAction("Quit", self)
file.addAction(quit)
# 菜单发射triggered信号,将该信号连接到槽函数proecesstrigger(),该函数接收信号的QAction对象。
file.triggered[QAction].connect(self.processtrigger)
self.setLayout(layout)
self.setWindowTitle("menu 例子")
self.resize(350, 300)
def processtrigger(self, q):
print(q.text() + " is triggered")
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = MenuDemo()
demo.show()
sys.exit(app.exec_())
工具栏QToolBar
常用方法
addAction() | 添加具有文本或图标的工具按钮 |
addSeperator() | 分组显示工具按钮 |
addWidget() | 添加工具栏中按钮以外的控件 |
addToolBar() | 使用QMainWindow类的方法添加一个新的工具栏 |
setMovable() | 工具栏变得可移动 |
setOrientation() | 工具栏的方向可以设置为Qt.Horizontal或Qt.vertical |
每当单击工具栏中的按钮时,都将发射actionTriggered信号。另外,这个信号将关联的QAction对象的引用发送到连接的槽函数上。
代码示例
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class ToolBarDemo(QMainWindow):
def __init__(self, parent=None):
super(ToolBarDemo, self).__init__(parent)
self.setWindowTitle("toolbar 例子")
self.resize(300, 200)
layout = QVBoxLayout()
tb = self.addToolBar("File")
new = QAction(QIcon("./images/new.png"), "new", self)
tb.addAction(new)
open = QAction(QIcon("./images/open.png"), "open", self)
tb.addAction(open)
save = QAction(QIcon("./images/save.png"), "save", self)
tb.addAction(save)
tb.actionTriggered[QAction].connect(self.toolbtnpressed)
self.setLayout(layout)
def toolbtnpressed(self, a):
print("pressed tool button is", a.text())
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = ToolBarDemo()
demo.show()
sys.exit(app.exec_())
状态栏QStatusBar
常用方法
addWidget() | 在状态栏中添加给定的窗口小控件对象 |
addPermanentWidget() | 在状态栏中永久添加给定的窗口小控件对象 |
showMessage() | 在状态栏中显示一条临时信息指定时间间隔 |
clearMessage() | 删除正在显示的临时信息 |
removeWidget() | 从状态栏中删除指定的小控件 |
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class StatusDemo(QMainWindow):
def __init__(self, parent=None):
super(StatusDemo, self).__init__(parent)
bar = self.menuBar()
file = bar.addMenu("File")
file.addAction("show")
file.triggered[QAction].connect(self.processTrigger)
self.setCentralWidget(QTextEdit())
self.statusBar = QStatusBar()
self.setWindowTitle("QStatusBar 例子")
self.setStatusBar(self.statusBar)
def processTrigger(self, q):
if (q.text() == "show"):
self.statusBar.showMessage(q.text() + " 菜单选项被点击了", 5000)
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = StatusDemo()
demo.show()
sys.exit(app.exec_())