2019-02-05 6 窗口满屏、菜单、工具栏和响应事件

1) 如何让一个软件占用全屏幕,只要在主窗口初始化代码调用self.showFullScreen()

2)关于菜单有两个重要概念,菜单的图像外观,触发器事件QAction。如果菜单没有触发器事件QAction ,该菜单就是“哑”的;需绑定触发响应对象QAction,才能构成活的菜单;这里QAction 是抽象类,专门接收鼠标点击。除了菜单外,ToolBar也能绑定触发响应事件QAction。因此,设计一组QAction可以供给菜单和ToolBar两边使用。

3)菜单的建立,一般需要三步:1 生成menuBar 2 生成menu 3生成Action;其中可以看成是一颗树;以windows的NoteBook为例:

生成树根menuBar,其中包含menu【 文件,编辑,格式,查看,帮助 】,其中menu的每个项“文件,编辑,格式,查看,帮助”下面又可以停靠【menu,QAction】注意,其中的树叶不是menu,而是QAction

   1生成菜单条: menubar = self.menuBar()

   2生成菜单项:file = menubar.addMenu("&File") 【可以反复多次】

   3生成菜单项的菜单项:open = file.addMenu("&File") 【可以反复多次】

    4菜单项绑定响应:file.addAction(exit) 

4)建立工具栏:

         toolbar = self.addToolBar("Exit"

         toolbar.addAction(exit)

5)生成响应项:

    exit = QAction( QtGui.QIcon("icons/exit.png"),"Exit",self) 定义响应对象和图标、名称

    exit.setShortcut('Ctrl+Q')    快捷键

    exit.setStatusTip("Exit application")   鼠标停留提示 

    exit.triggered.connect( self.CloseApp )  绑定回调函数

6)生成窗口下方的状态栏:

简易生成:

            self.statusBar()  或

            self.statusBar().showMessage('Hello,小老弟!')

定制生成:

            self.statusBar = QStatusBar()   这里可以是你的定制状态栏

            self.setStatusBar(self.statusBar)

7)windows10的画图,写字板的软件菜单比较独特,是由tab窗和toolbar,menu三个组合而成,需要后文专门叙述;

8)注意:

    无论菜单、状态栏、工具栏,都属于窗口上的标准操作,而响应对象QAction不是

    菜单和ToolBar的触发对象是QAction,触发事件是trigger;因此,QAction与QPushButton对应,事件triggered 与clicked对应,两个对象要区分开。

实验代码:

import sys

from PyQt5.QtWidgets import *

from PyQt5 import QtGui

class MainWindow( QMainWindow):

def __init__ (self, parent =None):

        QMainWindow.__init__(self)

        self.showFullScreen()        

        self.setWindowTitle('mainwindow')

        textEdit = QTextEdit()

        self.setCentralWidget(textEdit)

        exit = QAction( QtGui.QIcon(  "icons/exit.png"),"Exit",self)

        exit.setShortcut('Ctrl+Q')

        exit.setStatusTip("Exit application")

        exit.triggered.connect( self.CloseApp )

        self.statusBar().showMessage("Hello World! ")

        menubar = self.menuBar()

        file = menubar.addMenu("&File")

        file.addAction(exit)

        toolbar = self.addToolBar("Exit")

        toolbar.addAction(exit)

    def CloseApp(self):

        self.close()

if __name__ == "__main__":

    app = QApplication(sys.argv)

    main = MainWindow()

    main.show()

    sys.exit(app.exec_())

猜你喜欢

转载自blog.csdn.net/weixin_34244102/article/details/88225702
今日推荐