我有一个显示表格小部件的视图,我想让孩子们了解这个基本视图。
这是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函数
答案 0 :(得分:0)
我解决了,问题是由于缺少连接而未在Child实例化中更新self.table_model