Qt Designer UI를 재설계할 때 사용자 정의 코드 손실을 방지하려면 어떻게 해야 합니까?
Dec 18, 2024 am 03:19 AMQt Designer UI 재설계 시 수정 사항 손실 해결
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Tensorflow 또는 Pytorch로 딥 러닝을 수행하는 방법은 무엇입니까?
