QMenu:该类提供了一个可添加菜单栏的控件,也可用于创建上下文菜单和弹出菜单。每个QMenu对象可以包含一个或多个QAction对象或者级联的QMenu对象。
创建一个弹出窗口,createPopupMenu()函数,menuBar()函数用于返回主窗口的QMenuBar对象。
addMenu()函数可以将菜单添加到菜单栏。addAction()函数可以在菜单中添加操作。
常用方法
|
menuBar() |
返回主窗口的QMenuBar对象 |
|
addMenu() |
在菜单栏添加一个新的QMenu对象 |
|
addAction() |
向QMenu控件中添加一个操作按钮,包含文本、图案 |
|
setEnable() |
将操作按钮状态设置为启用、禁用 |
|
addSeperator() |
在菜单中添加一条分割线 |
|
clear() |
删除菜单/菜单栏的内容 |
|
setShortcut() |
将快捷键关联到按钮 |
|
setText() |
设置菜单项文本 |
|
setTitle() |
设置QMenu控件标题 |
|
text() |
返回与QAction对象关联的文本 |
|
title() |
返回QMenu控件标题 |
#QMenuBar菜单栏实例
# -*- coding: utf-8 -*-
import sys,math,os
from PyQt5 import QtCore
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
file.addAction("New") #File功能中添加一个Action动作 名称为New
save=QAction("Save",self) #创建一个Action动作 名称为Save
save.setShortcut("Ctrl+S") #为该动作添加一个快捷键 ctrl + s
file.addAction(save) #File功能中添加一个名称为Save 的 Action动作,即上述对象
edit=file.addMenu("Edit") #File功能中添加一个名称为 Edit 的 菜单
edit.addAction("copy") #为Edit添加两个action动作 copy paste
edit.addAction("paste")
quit=QAction("Quit",self) #File功能中添加一个名称为Quit 的 Action动作
file.addAction(quit)
file.triggered[QAction].connect(self.processtrigger)
self.setLayout(layout)
self.setWindowTitle("menu 例子")
def processtrigger(self,q):
print(q.txt()+" is triggered")
if __name__=="__main__":
app=QApplication(sys.argv)
demo=MenuDemo()
demo.show()
sys.exit(app.exec_())

QToolBar:该控件由文本按钮、图标或其他小按钮组成的可移动面板,一般位于菜单栏下方
常用方法
|
addAction() |
添加具有文本和图标的工具按钮 |
|
addSeperator() |
分组显示工具按钮 |
|
addWidget() |
添加工具栏中按钮以外的控件 |
|
addToolBar() |
使用QMainWindow类的方法添加一个新的工具栏 |
|
setMoveable() |
工具栏变得可移动 |
|
setOrientation() |
工具栏的方向设置为Qt.Horizontal 或 Qt.Vertical |
#QToolBar菜单栏实例
# -*- coding: utf-8 -*-
import sys,math,os
from PyQt5 import QtCore
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class ToolParDemo(QMainWindow):
def __init__(self):
super(ToolParDemo, self).__init__()
self.setWindowTitle("toolbar例子")
self.resize(300,200)
layout=QVBoxLayout()
tb=self.addToolBar("File") #创建一个ToolBar
new=QAction(QIcon("../images/new.png"),"new",self) #创建一个Action
tb.addAction(new) #为ToolBar添加一个Action
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=ToolParDemo()
demo.show()
sys.exit(app.exec_())

QStatusBar:该控件为MainWindow对象在底部留有的一个水平线,叫做状态栏,用于显示永久的或临时的状态信息
常用方法
|
addWidget() |
在状态添加给定的窗口小控件 |
|
addPermancentWidget() |
在状态栏中永久添加给指定的窗口小控件 |
|
showMessage() |
在状态栏显示一条临时信息指定时间间隔 |
|
clearMessage() |
删除正在显示的临时信息 |
|
removeWidget() |
从状态栏删除指定控件 |
#QStatusBar状态栏实例
# -*- coding: utf-8 -*-
import sys,math,os
from PyQt5 import QtCore
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class StatusDemo(QMainWindow):
def __init__(self):
super(StatusDemo, self).__init__()
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_())

- QPrinter:该控件是打印图像,图像软件处理中的一个常用功能。本质上是一个QPaintDevice设备
#QPrinter打印图像实例
# -*- coding: utf-8 -*-
import sys,math,os
from PyQt5 import QtCore
from PyQt5.QtCore import *
from PyQt5.QtPrintSupport import QPrinter,QPrintDialog
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setWindowTitle(self.tr("打印图像"))
self.imageLabel=QLabel()
self.imageLabel.setSizePolicy(QSizePolicy.Ignored,QSizePolicy.Ignored)
self.setCentralWidget(self.imageLabel)
self.image=QImage()
self.createActions()
self.CreateMenus()
self.CreateToolBars()
ret=self.image.load("../images/screen.jpg")
if ret:
self.imageLabel.setPixmap(QPixmap.fromImage(self.image))
self.resize(self.image.width(),self.image.height())
def CreateMenus(self):
PrintMenu=self.menuBar().addMenu(self.tr("打印")) #在QMainWindow中的菜单栏添加一个打印菜单,
PrintMenu.addAction(self.PrintAction) #为菜单添加功能Action
def createActions(self):
self.PrintAction=QAction(QIcon("../images/printer.jpg"),self.tr("打印"),self) #为Action设置图像,
self.PrintAction.setShortcut("Ctrl+P") #为Action设置快捷键
self.PrintAction.setStatusTip(self.tr("打印")) #为Action设置状态提示,鼠标放在图标上显示提示“打印”
self.PrintAction.triggered.connect(self.slotPrint)
def CreateToolBars(self):
fileToolBar=self.addToolBar("Print") #添加一个状态栏 Print
fileToolBar.addAction(self.PrintAction) #为状态栏添加Action
def slotPrint(self):
printer=QPrinter()
printDialog=QPrintDialog(printer,self)
if printDialog.exec_():
painter=QPainter(printer,self)
rect=painter.viewport()
size=self.image.size()
size.scale(rect.size(),Qt.KeepAspectRatio)
painter.setViewport(rect.x(),rect.y(),size.width(),size.height())
painter.setWindow(self.image.rect())
painter.drawImage(0,0,self.image)
if __name__=="__main__":
app=QApplication(sys.argv)
demo=MainWindow()
demo.show()
sys.exit(app.exec_())


本文介绍PyQt5中QMenu、QMenuBar、QToolBar和QStatusBar的使用方法,包括创建菜单、工具栏、状态栏及打印功能。通过实例演示如何添加菜单项、操作按钮、快捷键和状态信息。
2770

被折叠的 条评论
为什么被折叠?



