从子类 PyQT5 调用父类

Posted

技术标签:

【中文标题】从子类 PyQT5 调用父类【英文标题】:Call parent class from child class PyQT5 【发布时间】:2019-03-09 07:02:25 【问题描述】:

人。 我又来这里尝试解决问题了。 我所有的代码都可以在这里看到:

https://gitlab.com/zoiobnu/comissiosystem

我有一个带有 MainWindow 的 Main.py ,它有 menu, toolbar 。然后工具栏用 form 调用 Widget 。此表单有一个搜索按钮 (Pesquisar),可打开对话框并关闭小部件。

ItemForm.py

    def search(self):
        item_search = ItemSearch(self)
        item_search.show()
        self.close()

比起这个新的搜索对话框,我可以在 DB 中搜索并获取 ID。

ItemSearch.py​​

        @pyqtSlot()
        def on_click(self):
            item_form = ItemForm(codigo=self.grdPesquisaCliente.item(self.grdPesquisaCliente.currentRow(), 0).text())
            item_form.show()
            ItemSearch.close()

我现在可以双击行并获取单元格 id,但我想使用此单元格 id 返回到第一个表单并使用 db 数据填充字段。

但我不知道如何使这项工作。

【问题讨论】:

如果我对问题的理解正确,您应该能够在 itemSearch 中创建一个信号,该信号在双击时将行的文本作为元组发出。您只需要将信号连接到先前表单中的 `set_item(item)` 方法并在 itemForm 中的 lineEdit 上调用 setText(item[...]) 【参考方案1】:

为了解决这个问题,我做了这个! 在父类上创建一个新方法来填充表单,然后用 self.parent() 调用

ItemSearch.py​​

@pyqtSlot()
def on_click(self):
    self.parent().fill_data(codigo=self.grdPesquisaCliente.item(self.grdPesquisaCliente.currentRow(), 0).text())
    self.close()

然后在 ItemForm 上,我只是修复了打开对话框后不关闭表单的方法。

itemform.py

def search(self):
    item_search = ItemSearch(self)
    item_search.show()

【讨论】:

以上是关于从子类 PyQT5 调用父类的主要内容,如果未能解决你的问题,请参考以下文章

面向对象:继承抽象类抽象方法虚方法

多态性

继承

java多态的向上转型

从向上向下转型到----抽象类接口

Java的三大特性——多态