不知道为什么我不能通过这个,但是我试图继承QSQLTableModel,我必须将数据库传递给它……但是我不确定如何。
class SclDataModel(QSqlTableModel):
def __init__(self,parent=None):
super(SclDataModel, self).__init__(parent)
class SclDataBrowse(QWidget):
def __init__(self, parent=None):
super(SclDataBrowse, self).__init__(parent)
self.setup_db()
self.setup_model()
def setup_db(self):
self.db = QSqlDatabase("QMYSQL")
self.db.setHostName("myhost")
self.db.setUserName("myuser")
self.db.setPassword("mypassword")
self.db.setDatabaseName("mydbname")
self.db.open()
def setup_model(self):
self.model = SclDataModel(self,self.db)
可以在这里稍加推动。谢谢。
答案 0 :(得分:1)
有很多解决方案:
如果您不想覆盖任何内容,则可以使用pass
:
class SclDataModel(QSqlTableModel):
pass
或者,如果您要实现其他方法,则不必pass
class SclDataModel(QSqlTableModel):
def other_method(self, some_args):
# some code
class SclDataModel(QSqlTableModel):
def __init__(self, parent=None, db=QSqlDatabase()):
super(SclDataModel, self).__init__(parent, db)
# other code
*args
和**kwargs
class SclDataModel(QSqlTableModel):
def __init__(self, *args, **kwargs):
super(SclDataModel, self).__init__(*args, **kwargs)
# other code
了解继承用于自定义类,因此,例如,继承的类的构造函数无法与父类的构造函数匹配,例如:
class SclDataModel(QSqlTableModel):
def __init__(self, arg1, arg2=v_default,parent=None, db=QSqlDatabase()):
super(SclDataModel, self).__init__(parent, db)
self._arg1 = arg1
self._arg2 = arg2
# other code
最后,构造函数的参数将取决于您的需求