python 사용 Qt 인터페이스 및 논리 적 실현 방법

Qt 를 사용 한 친구,특히 QtCreator 의 습관 은 인터페이스 UI 에 대응 하 는 CPP 에 코드 를 쓴다.하지만 PyQt 에 서 는 그렇지 않 습 니 다.pyQt 는 하나의 인터페이스 일 뿐,인터페이스 즉 UI 만 생 성 되 며,하나의 버튼 이라도 python 에서 직접 써 야 합 니 다.당연 하 다 고 생각 하지 않 을 거 야.
pyQt 5 설치pip3 install pyQt  설치 디자이너
Qt5tools 의 디자이너 열기

인터페이스 를 만들어 서 마음대로 컨트롤 을 몇 개 놓 아 라.

이벤트 처리 가 필요 한 사람 은 python 에서 Connect 를 사용 할 수도 있 고 Siangls/slot 에서 시스템 에 대한 이벤트 나 지정 이 벤트 를 편집 할 수도 있 습 니 다.이 루어 진 내용 은 여기 서 할 수 없다.그냥 인터페이스
이것 은 몇 가지 편집 방식 이다.

이것 은 내 가 클릭 한 이벤트 이름 을 편집 한 것 이다.
만약 당신 이 편집 했다 면,인터페이스 가 당신 을 도와 신호 와 슬롯 을 연결 할 때 까지 기다 리 세 요.인터페이스 에 두 개의 버튼 이 있 는데 하 나 는 디자이너 로 연결 되 고 하 나 는 수 동 으로 연결된다.구별 하 다
생 성 된 ui 파일 저장 소 를 전환 하면 ui 가.py 로 변 하 는 과정 입 니 다.py 는 python 에서 직접 사용 할 수 있 습 니 다.
Script 에 pyuic 5.exe 가 있 습 니 다.어떤 편집 도구 에 서 는 설 정 된 도구 체인 을 사용 하 셔 도 됩 니 다.여기 명령 을 먼저 사용 합 니 다.pip3 install pyQt-tools생 성 된 py 파일 은 다음 과 같 습 니 다.

class Ui_Dialog(object):
def setupUi(self, Dialog):
    Dialog.setObjectName("Dialog")
    Dialog.resize(657, 496)
    self.pushButton = QtWidgets.QPushButton(Dialog)
    self.pushButton.setGeometry(QtCore.QRect(300, 440, 75, 23))
    self.pushButton.setObjectName("pushButton")
    self.pushButton_2 = QtWidgets.QPushButton(Dialog)
    self.pushButton_2.setGeometry(QtCore.QRect(450, 440, 75, 23))
    self.pushButton_2.setObjectName("pushButton_2")
    self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
    self.buttonBox.setGeometry(QtCore.QRect(360, 190, 156, 23))
    self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
    self.buttonBox.setObjectName("buttonBox")
    self.columnView = QtWidgets.QColumnView(Dialog)
    self.columnView.setGeometry(QtCore.QRect(40, 30, 256, 192))
    self.columnView.setObjectName("columnView")
    self.calendarWidget = QtWidgets.QCalendarWidget(Dialog)
    self.calendarWidget.setGeometry(QtCore.QRect(10, 290, 248, 197))
    self.calendarWidget.setObjectName("calendarWidget")
    self.progressBar = QtWidgets.QProgressBar(Dialog)
    self.progressBar.setGeometry(QtCore.QRect(40, 250, 211, 23))
    self.progressBar.setProperty("value", 24)
    self.progressBar.setObjectName("progressBar")
    self.verticalScrollBar = QtWidgets.QScrollBar(Dialog)
    self.verticalScrollBar.setGeometry(QtCore.QRect(330, 220, 16, 160))
    self.verticalScrollBar.setOrientation(QtCore.Qt.Vertical)
    self.verticalScrollBar.setObjectName("verticalScrollBar")
    self.horizontalScrollBar = QtWidgets.QScrollBar(Dialog)
    self.horizontalScrollBar.setGeometry(QtCore.QRect(380, 110, 160, 16))
    self.horizontalScrollBar.setOrientation(QtCore.Qt.Horizontal)
    self.horizontalScrollBar.setObjectName("horizontalScrollBar")

    self.retranslateUi(Dialog)
    self.pushButton.clicked.connect(Dialog.PushButton1Clicked)
        QtCore.QMetaObject.connectSlotsByName(Dialog)


def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.pushButton.setText(_translate("Dialog", "PushButton"))
self.pushButton_2.setText(_translate("Dialog", "PushButton")) 
컨트롤 의 위치 속성 만 정의 하 는 것 을 보 았 습 니 다.
self.pushButton.clicked.connect(Dialog.PushButton 1Clicked)는 클릭 이벤트 의 처리 이름 과 연 결 됩 니 다.
모두 가 알다 시 피 인 터 페 이 스 는 이 인 터 페 이 스 를 지탱 하기 위해 클래스 합병 이 필요 하 다.Qt 써 본 건 알 겠 지만인터페이스 가 있 으 면 인터페이스 와 합 쳐 야 합 니 다.이 종 류 는 cpp 와.h 파일 에 해당 하 는 것 을 상상 할 수 있 습 니 다.
ui 는 두 개의 함수 만 있 습 니 다.setupUi 와 retranslateUi 는 ui 를 설치 하거나 ui 를 풀 고 싶 습 니 다.
setupUi 의 인자 가 없 는 것 을 보 았 습 니 다.정 의 된 클래스 가 바로 이 인자 입 니 다.self.pushButton.clicked.connect(Dialog.PushButton 1Clicked)를 보면 PushButton 1Clicked 가 Dialog 인자 에 있 는 것 으로 추정 해 야 합 니 다.우리 가 정의 하 는 클래스 에서 이 함 수 를 실현 해 야 합 니 다.
클래스 를 정의 하 겠 습 니 다.

class testForm(QtWidgets.QDialog):
def PushButton1Clicked(self):
    box = QtWidgets.QMessageBox()
    box.warning(self,"  ","        ")
우리 의 인 터 페 이 스 는 QDialog 가 필요 한 클래스 이기 때문에 아래 의 주 함 수 를 계승 합 니 다.주 함 수 는 프로그램의 입구 라 는 것 을 잘 알 고 있 습 니 다.

import sys
if __name__=='__main__':
  app=QtWidgets.QApplication(sys.argv) #      
  Form=testForm() #                      QtWidgets.QDialog     ,       
  ui=Ui_Dialog() #   ,        
  ui.setupUi(Form) #     
  Form.show()   #         
  sys.exit(app.exec_()) #          ,            
이상 은 인터페이스의 전체 세트 입 니 다.운행 효과 보기

첫 번 째 단 추 를 누 르 십시오

효과 가 있 습 니 다.지금 은 main 함수 에서 UI 를 정의 하고 UI 를 불 러 오 는 것 이 너무 번 거 롭 습 니 다.여기 서 testDialog 류 에 통합 되 어 사용 하기에 매우 편리 합 니 다.
생 성 된 모든 코드 를 제외 하고 py 파일 을 새로 만 들 고 생 성 된 파일 을 참조 하 며 단추 2 의 연결 도 클래스 에 넣 습 니 다.

from testDialog import Ui_Dialog
from PyQt5 import QtCore, QtGui, QtWidgets

class testDiaog(QtWidgets.QDialog):
def __init__(self):
    QtWidgets.QDialog.__init__(self)
self.ui = Ui_Dialog()
self.ui.setupUi(self)#       
self.ui.pushButton_2.clicked.connect(self.PushButtonClicked2)

def PushButton1Clicked(self):
    box = QtWidgets.QMessageBox()
    box.warning(self,"  ","        ")
def PushButtonClicked2(self):
self.close() #  

import sys
if __name__ == '__main__':
  app = QtWidgets.QApplication(sys.argv)
  window = testDiaog()
  window.show()
  sys.exit(app.exec_())
실행 후 두 번 째 단 추 를 누 르 면 화면 이 닫 힙 니 다.캡 처 를 편리 하 게 하기 위해 서 입 니 다.

def PushButtonClicked2(self):
# self.close() #  
box = QtWidgets.QMessageBox()
  box.warning(self, "  ", "       ")
실행 효과 그림 은 다음 과 같 습 니 다.

기본적으로 여기까지 입 니 다.여기 서 마 치 겠 습 니 다.여러분 의 학습 에 도움 이 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기