Ответы пользователя по тегу PyQt
  • Как открыть новое окно по клику на пункт в menuBar?

    1na1
    @1na1
    Hello, world!
    В коде main_window необходимо присоединить сигнал menuBar.clicked() к методу отображения окна about_window. Метод отображения - это about_window.exec_().

    PS: Не забудь, что about_window необходимо импортировать в main_window командой import

    Приблизительно это должно выглядеть так:

    # Код окна main_window
    #
    import about_window  # Импортируем окно About
    ...
    ...
    # Конструктор main_window
    ... 
    ...
    self.menuBar.clicked.connect(self.show_about_window)  # Всякий раз при клике на menuBar выполнять self.show_about_window
    ...
    ...
    # Тело main_window
    def show_about_window(self):  # Выполняется всякий раз при клике на menuBar 
        about = about_window()  # Создать окно About
        about.exec_()  # Показать окно About
    Ответ написан
  • Как в связать объекты в PyQt?

    1na1
    @1na1 Автор вопроса
    Hello, world!
    Пока удалось решить через назначение кастомного атрибута (свойства) в каждом чекбоксе. Атрибут указывает на имя поля, которое относится к этому чекбоксу.

    Во время конструирования формы задаю атрибуты так:

    self.MyChkbox.setProperty('field_name', 'MyLineEdit')


    Потом при инициализации окна делаю так:

    for checkbox in self.findChildren(QCheckBox): # Для всех чекбоксов формы
        if checkbox.property('field_name'): # Если чекбокс имеет свойство 'field_name'
            checkbox.stateChanged.connect( # Законнектить смену статуса чекбокса к функции
                # Функция поиска поля по имени объекта, содержащегося в свойстве отправителя (чекбокса)
                lambda state : self.findChild(QLineEdit, self.sender().property('field_name')).setReadOnly( 
                    True if state == 2 else False # Выставить соответствующий статус доступности для ввода
                )
            )


    Буду очень рад любым другим предложениям. Особенно ссылке на чтиво.
    Ответ написан
    Комментировать