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_())
网友评论