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_())

运行效果:

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值