변경 사항을 덮어쓰지 않고 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)
위치:
추가 이점:
이 구현을 사용하면 상위 창의 closeEvent로 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()
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3