exit=QtGui.QAction(QtGui.QIcon('pix/Moon.bmp'),'Exit',self) #创建一个action "exti"为title self 为parent
exit.setSeparator(bool)#设置设置该action为分离器 也就是分隔符? 当为true时 QIcon会无效
exit.setShortcut('Ctrl+Q') #设置快捷键
也可以 exit.setShortcut(QKeySequence.New) # QKeySequence 保护标准的快捷按钮 QKeySequence.Paste
exit.setStatusTip('Exit Application') #设置状态栏说明
exit.setToolTip("exit") #设置tip
exit.setText("sdf") #设置title
exit.setWhatsThis("string") #设置what's this
当checked状态发生改变时 发出toggled(bool) 信号
当点击 触发状态发生变化时 发出triggered(bool)信号
self.connect(exit,QtCore.SIGNAL('triggered()'),QtCore.SLOT('close()')) #设置信号 插槽
exit.triggered.connect(QtGui.qApp.quit) #设置信号 插槽的另一种方法
创建的action 可以使用在 menubar toolbar
fileMenu = QMenuBar().addMenu(tr("&Exit"));
fileMenu.addAction(exit);
fileToolBar = addToolBar(tr("Exit"));
fileToolBar.addAction(exit);
self.label_img.setContextMenuPolicy(Qt.ActionsContextMenu) #设置右键菜单 添加action为右键菜单
因为创建一个QAction 需要6行代码左右,如果一个窗口有几个QAction的话 会很繁琐 所以我们可以定义一个方法 这个可以简单点
def createAction(self,text,slot=None,shortcut=None,icon=None,tip=None,checkable=False,signal="triggered()"):
action=QAction(text,self)
if icon is not None:
action.setIcon(QIcon("im.png"))
if shortcut is not None:
action.setShortcut(shortcut)
if tip is not None:
acton.setToolTip(tip)
action.setStatusTip(tip)
if slot is not None:
self.connect(action,SIGNAL(signal),slot)
if checkable:
action.setCheckable(checkable)
return action
下面是一个完整的例子:
from PyQt4 import QtGui
import sys
app = QtGui.QApplication(sys.argv)
main=QtGui.QMainWindow()
main.setWindowTitle('menubar')
main.resize(250, 150)
menu=main.menuBar()
file=menu.addMenu('&File')
exit=QtGui.QAction('Exit', main)
exit.setShortcut('Ctrl+Q')
exit.setStatusTip('Exit application')
main.statusBar()
exit.triggered.connect(QtGui.qApp.quit)
file.addAction(exit)
main.show()
sys.exit(app.exec_())
面向对象的例子:
import sys
from PyQt4 import QtGui,QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self,parent=None):
QtGui.QMainWindow.__init__(self)
self.resize(250, 150)
self.setWindowTitle('menubar')
exit=QtGui.QAction(QtGui.QIcon('icons/aboutdlg_logo.bmp'),'Exit', self)
exit1=QtGui.QAction('Login', self)
exit1.setShortcut('Ctrl+L')
exit1.setStatusTip('Login window')
exit.setShortcut('Ctrl+Q')
exit.setStatusTip('Exit application')
exit.connect(exit,QtCore.SIGNAL('triggered()'),QtGui.qApp, QtCore.SLOT('quit()'))
self.statusBar()
menubar=self.menuBar()
file=menubar.addMenu('&File')
file.addAction(exit)
file.addAction(exit1)
app=QtGui.QApplication(sys.argv)
main=MainWindow()
main.show()
sys.exit(app.exec_())