菜单栏是大部分软件都有的,菜单栏能提供便捷的帮助,记事本的菜单栏就是最简单的一个例子,等过几天我会写记事本的菜单栏了再另外发代码出来。
下面的代码是Copy的:
import sys
from PyQt4 import QtGui,QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.resize(250,150)
self.move(600,300)
self.setWindowTitle('menubar')
exit = QtGui.QAction(QtGui.QIcon('web.png'),'Exit',self) #创建相应的动作(自己的理解)
exit.setShortcut('Ctrl+Q') #创建前面动作的快捷方式
exit.setStatusTip('Exit application') #属于QAction这个类的成员函数,用于设置在状态栏提示前面动作的信息
self.connect(exit,QtCore.SIGNAL('triggered()'),QtCore.SLOT('close()')) #建立信号和槽之间的连接,
self.statusBar().showMessage("ready")
menubar = self.menuBar()
file= menubar.addMenu('&File')
file.addAction(exit)
app=QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())
这里我想详细分析一下。
首先查看QAction这个类,可以发现它有三种实例化方式:
QAction(QObject) QAction(QString, QObject) QAction(QIcon, QString, QObject)
显然我们这里采用的是第三种实例化方式。我想说的是,我们不仅要看得懂别人的代码,重要的是自己还要会分析在这么多选择下,他为什么要这么写。(显然,代码的作者要生成图标,所以选第三种)
我们再看一下setShortcut这个函数,它是QAction这个类的成员函数,exit是QAction实例化的一个对象,所以exit调用setShortcut这个函数就很正常了,另外,setShortcu函数的原型是:defsetShortcut(self, QKeySequence),QKeySequence也可以猜出来其参数是快捷键了。
有了刚才那个例子,我们也可以猜出来setStatusTip是QAction的成员函数了,我们在看一下它的原型:
defsetStatusTip(self, QString),很明显,QString是我们要显示的提示信息了。
紧接着又出现了和上面函数很像的statusBar(),点进去发现,它是属于QMainWindow这个类的,所以用self就是对的
它的原型是defstatusBar(self),返回值类型是QstatusBar,结合英文可以猜知它的作用是获得状态栏,
再看一下它的尾巴showmessage(),
点开发现它有五种类型,这里显然点进去第四个,发现它就是QstatusBar的成员函数。进而联系到它的作用,在状态栏上显示信息。
我也点进去了其他的,发现它属于的类都不是QstatusBar。(从后面的括号信息也看得出)
self.connect(exit,QtCore.SIGNAL('triggered()'),QtCore.SLOT('close()')) #建立信号和槽之间的连接, 这一句话我没有介绍,它是信号和槽之间的连接,有一篇文章不错,点击打开链接