PyQt视图继承

2024-09-29 19:25:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个视图显示一个表小部件,我想让这个基本视图的孩子。你知道吗

这是基本视图

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++中,继承将创建两个表\u小部件和两个表\u模型,并且可以工作,但是我似乎缺少了一些Python代码。你知道吗

编辑:我添加了start\u测试函数


Tags: testselfbasemodelinit部件devicedef

热门问题