PyQt — управление вкладками из внешнего класса

Я разрабатываю приложение с использованием PyQt, которое будет управлять несколькими экземплярами Selenium. Каждый экземпляр имеет QFrame с уникальной информацией и элементами управления, и его можно перемещать по вкладкам из главного окна.

class Instance(QFrame):

    def __init__(self):
        super().__init__()
        self.username = "whatever"

        ...

        self.startButton = QPushButton('Start')
        self.startButton.clicked.connect(lambda: self.engineStart())

        self.exitButton = QPushButton('Exit')
        self.exitButton.clicked.connect(lambda: self.engineExit())

        ...

Как это выглядит

Пользователи должны иметь возможность создавать и удалять экземпляры по своему желанию.

Создать вкладку не проблема. У меня есть кнопка «+», установленная как QTabWidget cornerWidget. Это связано с простым способом добавить вкладку.

class App(QFrame):

    def __init__(self):

        ...

    def addNewTab(self):
        t = Instance()
        self.tabs.addTab(t, t.username)

Проблема в том, как я могу использовать кнопку «Выход» из «внутреннего» класса экземпляра, чтобы удалить вкладки, которые управляются из «внешнего» класса главного окна? Мне нужен способ позвонить removeTab()


person Scott Sinischo    schedule 30.07.2017    source источник


Ответы (1)


Чтобы сделать то, что вы хотите, вы должны создать слот в главном окне и подключить его к сигналу нажатия кнопки, как показано ниже:

class App(QFrame):

    def __init__(self):
        ...
    def addNewTab(self):
        t = Instance()
        self.tabs.addTab(t, t.username)
        t.exitButton.clicked.connect(self.slot)

    def slot(self):
        self.tabs.removeTab(your_index)
person eyllanesc    schedule 30.07.2017