PyQt4 QAction()使用教程

9 篇文章 0 订阅

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


 

 


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值