PyQt查看继承

时间:2018-03-07 15:06:25

标签: python inheritance pyqt

我有一个显示表格小部件的视图,我想让孩子们了解这个基本视图。

这是BaseView

cwd = os.getcwd()
base_startup_path = os.path.join(cwd, r'gui\BaseView.ui')
Ui_base_startup, QtBaseClass = uic.loadUiType(base_startup_path)


class BaseView(QtBaseClass, Ui_base_startup):

  def __init__(self, parent, device_controller):
    super(BaseView, self).__init__( parent)

    self.ui = Ui_base_startup.__init__(self, parent)
    self.setupUi(self)
    self.device_controller = device_controller

    # Create model
    self.table_model = TableModel(self.device_controller.device_model_list)

    # Insert table to current view
    self.table_widget = AbstractTableView(self, self.table_model)
    self.verticalLayout.insertWidget(1, self.table_widget.tableView)

    # Button connection
    self.m_test_pcb.clicked.connect(self.start_test)

  def start_test(self):
    boot_app_first = True
    self.setup_test_module()
    self.device_controller.start_connection(boot_app_first)

  def setup_test_module(self):
    self.device_controller.test_module = start_acquisition()

然后,我想让这个更具体的孩子

class SpecificView(BaseView):

def __init__(self, parent, device_controller):
    super(SpecificView, self).__init__(parent, device_controller)

    # Specific stuff to be added        
    self.m_test_pcb.setText('Debug Device')

def setup_test_module(self):
    self.device_controller.test_module = specific_test()

因此,BaseView被添加到堆叠小部件的第0页,并且SpecificView被添加到同一堆叠小部件的第1页。当我运行应用程序时,堆叠小部件的第0页和第1页都显示相同的按钮(显示不同的文本)和同一个表。在这一点上,一切都运作良好。

当我按下第0页上的按钮时,将填充第0页的表格。但是,当我按下第1页上的按钮时,第1页的表格什么都没有,并且填充了第0页的表格。

在c ++中,继承会创建两个table_widget和两个table_model,它可以工作,但我似乎错过了这个Python代码。

编辑:我添加了start_test函数

1 个答案:

答案 0 :(得分:0)

我解决了,问题是由于缺少连接而未在Child实例化中更新self.table_model