前文
PyQt5学习笔记7 - QLineEdit
PyQt5学习笔记8 - QTextEdit
PyQt5学习笔记9 - QPushButton & QRadioButton
PyQt5学习笔记10 - QCheckBox & QComboBox
PyQt5学习笔记11 - QSpinBox & QSlider
菜单栏 QMenuBar
在QMainWindow对象的标题栏下方,水平的QMenuBar被保留显示QMenu对象。
QMenu类提供了一个可以添加到菜单栏的小控件,也用于创建上下文菜单和弹出菜单。每个QMenu对象都包含一个或者多个QAction对象或级联的QMenu对象。
单击任何QAction按钮时,QMenu对象否会发射triggered信号。
QMenubar 常用方法如下
方法 | 描述 |
---|---|
menuBar() |
返回主窗口的QMenuBar对象 |
addMenu() |
在菜单栏中添加一个新的QMenu对象 |
addAction() |
向QMenu小控件中添加一个操作按钮,其中包含文本或图标 |
setEnabled() |
将操作按钮状态设置为启用/禁用 |
addSepertor() |
在菜单中添加一条分割线 |
clear() |
删除菜单/菜单栏的内容 |
setShortcut() |
将快捷键关联到操作按钮 |
setText() |
设置菜单项的文本 |
setTitle() |
设置QMenu小控件的标题 |
text() |
返回与QAction对象关联的文本 |
title() |
返回QMenu小控件的标题 |
实例:QMenuBar的使用
import sys
from PyQt5.QtWidgets import QMainWindow, QHBoxLayout, QAction, QApplication
class QMenuBarDemo(QMainWindow):
def __init__(self, parent=None):
super(QMenuBarDemo, self).__init__(parent)
layout = QHBoxLayout()
menu_bar = self.menuBar()
file = menu_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_action = QAction('Quit', self)
file.addAction(quit_action)
file.triggered[QAction].connect(self.triggered_event)
self.setLayout(layout)
self.setWindowTitle('QMenuBarDemo')
@staticmethod
def triggered_event(q):
print(q.text() + 'is triggered')
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = QMenuBarDemo()
demo.show()
sys.exit(app.exec())
添加菜单栏使用addMenu
,添加子菜单使用addAction
, 设置快捷键:
save.addShortcut("Ctrl+S")
工具栏 QToolBar
QToolBar控件是由文本按钮,图标或其他小控件按钮组成的可移动面板,通常位于菜单栏下方
QToolBar类常用方法
方法 | 描述 |
---|---|
addAction() |
添加工具按钮 |
addSeperator() |
分组显示工具按钮 |
addWidget() |
添加工具栏中按钮以外的控件 |
addToolBar() |
使用QMainWindow类添加一个新的工具栏 |
setMovable() |
设置工具栏是否可移动 |
setOrientation() |
设置工具栏是否可以设置横竖方向 |
实例:QToolBar的使用
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMainWindow, QVBoxLayout, QApplication, QAction
class QToolBarDemo(QMainWindow):
def __init__(self, parent=None):
super(QToolBarDemo, self).__init__(parent)
self.setWindowTitle('ToolBarDemo')
self.setWindowIcon(QIcon('../image/python.png'))
self.resize(400, 240)
menu_bar = self.menuBar()
file = menu_bar.addMenu('File')
file.addAction('New')
file.addAction('Open')
file.addAction('Save')
file.triggered[QAction].connect(self.press_event)
tool_bar = self.addToolBar('File')
new = QAction(QIcon('../image/new.png'), 'New', self)
open_file = QAction(QIcon('../image/open.png'), 'Open', self)
save = QAction(QIcon('../image/save.png'), 'Save', self)
tool_bar.addAction(new)
tool_bar.addAction(open_file)
tool_bar.addAction(save)
tool_bar.actionTriggered[QAction].connect(self.press_event)
@staticmethod
def press_event(a: QAction):
print(f'Press tool button is {a.text()}')
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = QToolBarDemo()
demo.show()
sys.exit(app.exec())
状态栏 StatusBar
MainWindow 对象在底部保留有一个水平条作为状态栏(QStatusBar), 用于显示状态信息。
QStatusBar 常用方法
方法 | 描述 |
---|---|
addWidget() |
在状态栏中添加给定的控件对象 |
addPermanentWidget() |
在状态栏中就用添加给定的控件对象 |
showMessage() |
在状态栏中显示一条临时的信息,指定时间间隔 |
clearMessage() |
删除正在显示的临时信息 |
removeWidget() |
在状态栏中移除指定的控件 |
实例:QSatusBar 的使用
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QMainWindow, QAction, QTextEdit, QStatusBar, QApplication
class QStatusBarDemo(QMainWindow):
def __init__(self, parent=None):
super(QStatusBarDemo, self).__init__(parent)
menu_bar = self.menuBar()
file = menu_bar.addMenu('File')
file.addAction('show')
file.triggered[QAction].connect(self.action_event)
self.text_edit = QTextEdit()
self.setCentralWidget(self.text_edit)
self.status_bar = QStatusBar()
self.setWindowTitle('QStatusBarDemo')
self.setWindowIcon(QIcon('../image/python.png'))
self.setStatusBar(self.status_bar)
def action_event(self, q: QAction):
if q.text() == 'show':
self.status_bar.showMessage(f'click menu:{q.text()} || message: {self.text_edit.toPlainText()}', 5000)
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = QStatusBarDemo()
demo.show()
sys.exit(app.exec())
如有侵权,请联系删除
网友评论