QAction можно проверить во время в QMenu с вложенным меню

Я хочу создать вложенное меню с тремя уровнями File-> Circuit-> затем с опцией Full of half с более поздними опциями, доступными для проверки и эксклюзивными. Я добился этого в отношении элементов, которые можно проверить, но не исключительных.

Первоначально я использовал этот пример (Одно действие QAction, которое можно проверить одновременно в QMenu) для setExclusive в группе, хотя я не мог добавить еще один уровень вложенной группы. Я могу установить «Файл» -> «Выбор схемы», но не полный или половинный выбор, поэтому я выбрал метод ниже, чтобы установить количество уровней меню.

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, QMenu, QApplication

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.menubar = self.menuBar()
        self.fileMenu = self.menubar.addMenu('File')

        self.impMenu = QMenu('Circuit', self)
        self.impAct0 = QAction('Half Bridge', self, checkable=True, checked=True) 
        self.impAct1 = QAction('Full Bridge', self, checkable=True, checked=False) 
        self.impMenu.addAction(self.impAct0)
        self.impMenu.addAction(self.impAct1)
        self.fileMenu.addMenu(self.impMenu)

        self.setGeometry(300, 300, 300, 200)
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

person anthony crimin    schedule 12.08.2019    source источник
comment
Я тебя не понимаю, объясни лучше   -  person eyllanesc    schedule 12.08.2019
comment
Я следовал связанному примеру, используя группу действий для приведенного выше кода, и он работает, как и ожидалось. Не могли бы вы опубликовать свой код с включенным QActionGroup и указать, почему он не работает?   -  person Heike    schedule 12.08.2019
comment
надеюсь это понятнее   -  person anthony crimin    schedule 12.08.2019
comment
Не совсем. Вы все еще не показали, что пошло не так, когда вы попробовали пример, указанный в вопросе. Я разместил ответ ниже после принятого ответа в связанном вопросе, который, насколько я могу судить, работает правильно (если я неправильно понял вопрос).   -  person Heike    schedule 12.08.2019
comment
@anthonycrimin Ваш вопрос является точной копией, поскольку он такой же, как и в другом вопросе. Это не дубликат, если вы что-то пробовали и не получилось, но это не ваш случай.   -  person eyllanesc    schedule 12.08.2019


Ответы (1)


Следуя принятому ответу в примере, указанном в вопросе:

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.menubar = self.menuBar()
        self.fileMenu = self.menubar.addMenu('File')

        self.impMenu = QMenu('Circuit', self)
        self.impAct0 = QAction('Half Bridge', self, checkable=True, checked=True)
        self.impAct1 = QAction('Full Bridge', self, checkable=True, checked=False)
        self.impMenu.addAction(self.impAct0)
        self.impMenu.addAction(self.impAct1)
        self.fileMenu.addMenu(self.impMenu)

        self.setGeometry(300, 300, 300, 200)

        self.action_group = QActionGroup(self)
        self.action_group.addAction(self.impAct0)
        self.action_group.addAction(self.impAct1)
        self.action_group.setExclusive(True)

        self.show()

person Heike    schedule 12.08.2019
comment
Спасибо, именно то, что я хотел. - person anthony crimin; 12.08.2019