Qt Designer를 활용하여 Python용 그래픽 사용자 인터페이스(GUI)를 설계할 때 실망스러운 문제인 수정에 직면할 수 있습니다. UI를 다시 디자인하면 생성된 Python 코드에 작성된 내용이 손실됩니다. 이는 특히 특정 기능에 맞게 코드를 맞춤화하는 데 상당한 노력을 투자한 경우 상당한 불편이 될 수 있습니다.
이 문제를 해결하는 열쇠는 UI의 기능을 처리하는 코드를 바탕으로 UI를 디자인합니다. 생성된 Python 코드를 직접 수정하는 대신 디자인을 사용하지만 로직을 별도로 처리하는 새 클래스를 만듭니다.
Qt의 MainWindow 템플릿을 사용하는 다음 예를 고려해 보세요. 디자이너:
Ui_MainWindow.py
from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): [...] def retranslateUi(self, MainWindow): [...]
logic.py
from Ui_MainWindow import Ui_MainWindow class Logic(QMainWindow, Ui_MainWindow): def __init__(self, *args, **kwargs): QMainWindow.__init__(self, *args, **kwargs) self.setupUi(self)
이 접근 방식을 사용하면 코드에 영향을 주지 않고 Qt Designer의 디자인을 변경할 수 있습니다. logic.py.
PyQtClass 선택은 선택한 디자인 템플릿에 따라 다릅니다.
Template | PyQtClass |
---|---|
Main Window | QMainWindow |
Widget | QWidget |
Dialog with Buttons Bottom | QDialog |
Dialog with Buttons Right | QDialog |
Dialog with Without Buttons | QDialog |
이 구현 창 닫기 이벤트 처리와 같은 논리 클래스 내에서 고급 논리 구현을 허용합니다. 예는 다음과 같습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!