[英]PyQt5 custom QAction class
为了减少混乱。 我试图产生自己的类,该类继承自QAction
。 我想从QMainWindow
调用以重现以下代码:
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
exitAction = QAction(QIcon('exit.png'), '&Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit application')
exitAction.triggered.connect(self.quit)
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
如您所见,我只是在菜单栏中添加一个动作。 但是我想使我的程序更面向对象。 我希望以下是可能的:
from PyQt5.QtWidgets import QAction
from PyQt5.QtGui import QIcon
class exitAction(QAction):
def __init__(self,parent):
super.__init__(QIcon('exit.png'), '&Exit', parent)
self.setShortcut('Ctrl+Q')
self.setStatusTip('Exit application')
self.triggered.connect(parent.quit)
通过以下方式调用exitAction
类:
class MainWindow(QMainWindow):
def __init__(self):
#Create Menu
self.menuBar = self.menuBar()
#Add File Menu
file_menu = self.menuBar.addMenu('&File')
file_menu.addAction(exitAction(self))
这似乎很简单,但是对我来说没有意义的是为什么几乎等效的代码本身可以正常工作。
我得到的错误是TypeError: descriptor '__init__' requires a 'super' object but received a 'QIcon'
。 我自己设置的问题也可能是python的误解。 如果我使用的是C ++,则只需传递一个引用MainWindow的指针。
我想你的问题在这里:
super.__init__(QIcon('exit.png'), '&Exit', parent)
您应该编写super().
不super.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.