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