PyQt5 关于QToolBar的使用
今天开始记录自己学习PyQt5的点点滴滴。
QAction类提供了抽象的用户界面action,这些action可以被放置在窗口部件中。应用程序可以通过菜单,工具栏按钮以及键盘快捷
键来调用通用的命令。
Actions可以被添加到菜单和工具栏中,并且可以自动保持在菜单和工具栏中的同步。例如,在一个字处理软件中,如果用户在工具栏
中按下了Bold按钮,那么菜单中的Bold选项就会自动被选中。Actions可以作为独立的对象被创建,但是我们也可以在构建菜单的时候创建
它们;QMenu类包含了非常简便的方法用于创建适合用作菜单项的actions。QAction可以包括一个图标,菜单文本,快捷键,状态文本,
"What`s This"文本以及一个tooltip。这些内容的绝大部分都可以在构造函数中设置。也可以通过setIcon(),setIconText(),
setShortCut(),setStatusTip(),setWhatsThis和SetToolTip()函数分别设置。对于菜单项,我们还可以通过setFont()单独为
它们设置font。可以通过QWidget::addAction()或者是QGraphicsWidget::addAction()函数将Actions添加到窗口部件上。注意,
只有将Actions添加到窗口部件上之后,我们才可以使用这些actions;当actions的快捷键是全局的时候,我们也必须先将actions添加
到窗口部件上。一旦QAction被创建了,那么就必须将它添加到相关的菜单和工具栏上,然后将它们链接到实现相应action功能的槽函数上。
(以上文字来自网络转发,一时找不到连接,如有侵权请联系我删除。)
下面是一个下例子:
from PyQt5.QtWidgets import QAction, QMessageBox , QApplication,QMainWindow
from PyQt5.QtGui import QIcon
import sys
from functools import partial
class MunDemo(QMainWindow):
def __init__(self):
super(MunDemo, self).__init__(parent = None)
self.setWindowTitle("Example for ToolBar")
self.setWindowIcon(QIcon("./images/cartoon1.ico"))
self.resize(500, 300)
action = partial(newAction, self)
open = action("Open", self.open, "Ctrl+o",
"open", u"Open file")
save = action("Save", self.save, "Ctrl+S",
"save", u"Save file")
close = action("Close", self.close, "Ctrl+Q",
"quit", u"Close window")
new = action("New", self.new, "Ctrl+N",
"new", u"New a project")
self.toolBarMenu = (new , open , save , close )
tb = self.addToolBar("File")
self.addAct(tb, self.toolBarMenu)
def new(self):
QMessageBox.information(self, "提示",
"New a project!", QMessageBox.Ok)
def save(self):
QMessageBox.information(self, "提示",
"Save file!", QMessageBox.Ok)
def open(self):
QMessageBox.information(self, "提示",
"Open file!", QMessageBox.Ok)
def addAct(self,tb,actions):
for action in actions :
if action is not None :
tb.addAction(action)
else:
self.addSeparator()
def newAction(parent ,text, slot=None, shortcut=None, icon=None,
tip=None, checkable=False, enable=True):
a = QAction( text, parent)
if tip is not None:
a.setToolTip(tip)
a.setStatusTip(tip)
if icon is not None:
a.setIcon(newIcon( icon))
if shortcut is not None:
if isinstance(shortcut, (list, tuple)):
a.setShortcuts(shortcut)
else:
a.setShortcut(shortcut)
if slot is not None:
a.triggered.connect(slot)
if checkable:
a.setCheckable(checkable)
a.setEnabled(enable)
return a
def newIcon(icon):
path = "./images/" + icon +".png"
return QIcon(path)
if __name__ == "__main__":
app = QApplication(sys.argv)
demo = MunDemo()
demo.show()
sys.exit(app.exec_())
运行效果: