변경 사항을 덮어쓰지 않고 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)
위치:
추가 이점:
이 구현을 사용하면 부모 위젯으로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!