> 백엔드 개발 > 파이썬 튜토리얼 > 코드 변경 사항을 잃지 않고 Qt Designer UI를 어떻게 업데이트할 수 있습니까?

코드 변경 사항을 잃지 않고 Qt Designer UI를 어떻게 업데이트할 수 있습니까?

Mary-Kate Olsen
풀어 주다: 2024-12-18 06:15:09
원래의
440명이 탐색했습니다.

How Can I Update My Qt Designer UI Without Losing My Code Changes?

변경 사항을 덮어쓰지 않고 QtDesigner UI 업데이트

Qt Designer에서 변경한 UI가 나중에 코드 변환 후 덮어쓰여지는 문제가 발생한 경우 , 이 문서에서는 수정 사항을 보존하는 솔루션을 제공합니다.

이 문제를 해결하려면 생성된 Python을 수정하지 마십시오. 직접 코드를 작성하세요. 대신 새 파일에 별도의 클래스를 만들어 UI 로직을 처리하세요. 이 클래스는 Qt Designer에서 생성된 디자인 클래스를 상속하고 해당 메소드를 구현해야 합니다.

예:

해당 design.ui 파일이 있는 MainWindow 템플릿을 고려해보세요. 다음과 같이 Ui_Design.py로 변환합니다.

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        [...]

    def retranslateUi(self, MainWindow):
        [...]
로그인 후 복사

logic.py라는 새 파일을 만듭니다.

class Logic(QMainWindow, Ui_MainWindow):
    def __init__(self, *args, **kwargs):
        QMainWindow.__init__(self, *args, **kwargs)
        self.setupUi(self)
로그인 후 복사

이러한 규칙을 따르면 별도의 작업 없이 디자인을 수정하고 코드를 다시 생성할 수 있습니다. 논리 구현에 영향을 미칩니다. 논리 클래스가 다음 구조를 준수하는지 확인하세요.

class Logic(PyQtClass, DesignClass):
    def __init__(self, *args, **kwargs):
        PyQtClass.__init__(self, *args, **kwargs)
        self.setupUi(self)
로그인 후 복사

위치:

  • PyQtClass는 디자인 템플릿(예: QMainWindow, QWidget)에 따라 다릅니다. .
  • DesignClass는 디자인에 포함된 클래스의 이름입니다. (예: Ui_MainWindow).

추가 이점:

이 구현을 사용하면 부모 위젯으로 pyqt messageBox를 닫는 것과 같이 지정된 위젯 내에서 로직을 구현할 수 있습니다. 창 닫기 이벤트:

class Logic(QMainWindow, Ui_MainWindow):
    def __init__(self, *args, **kwargs):
        QMainWindow.__init__(self, *args, **kwargs)
        self.setupUi(self)

    def closeEvent(self, event):
        answer = QtWidgets.QMessageBox.question(
            self,
            'Are you sure you want to quit ?',
            'Task is in progress !',
            QtWidgets.QMessageBox.Yes,
            QtWidgets.QMessageBox.No
        )
        if answer == QtWidgets.QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()
로그인 후 복사

위 내용은 코드 변경 사항을 잃지 않고 Qt Designer UI를 어떻게 업데이트할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿