Я использую QStackedWidget и переключаюсь между различными представлениями. Каждая панель в основном является классом и должна находиться в своем собственном файле.
Проблема в том, что я хочу получить доступ к QTableView из другого файла, не передавая его ссылку в конструктор.
Основной файл:
class MyApp(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyApp, self).__init__(parent)
self.setupUi(self)
2-й файл
from ui_MainWindow import Ui_MainWindow
class LimitsEditor(QMainWindow):
def __init__(self, session):
QMainWindow.__init__(self)
self.tblCommonLimits_horizheader = QHeaderView(Qt.Horizontal)
self.tblCommonLimits_horizheader = QMainWindow.tblLimits.horizontalHeader()
Я получаю эту ошибку:
AttributeError: type object 'QMainWindow' has no attribute 'tblLimits'
Как видите, я хочу получить доступ к таблице с именем "tblLimits", которую я создал в QtDesigner, но не могу получить к ней доступ во втором файле.
Есть предложения?
(редактировать для форматирования)
Я редактирую это, чтобы показать, что я делаю, что работает:
В основном при создании экземпляра класса:
self.LimitsEditor = LimitsEditor(self.ui.tblLimits)
В файле LimitsEditor:
class LimitsEditor():
def __init__(self, tblLimits):
self.tblLimits = tblLimits
Теперь в основном я могу получить доступ к таблице как «self.ui.tlbLimits» ИЛИ «self.LimitsEditor.tblLimits»
Вот как я это делал, и это отлично работает. Мне это показалось не совсем правильным, поэтому мне было интересно, есть ли способ просто унаследовать знания всех элементов пользовательского интерфейса в другом классе / подклассе.