PyqQt 코드에서 QLabel / QPushButton의 색상을 빨간색 ( "바쁨"상태 표시)으로 변경하고 실행 후 다시 돌아옵니다.

크리스

PyQt를 사용하여 일부 외부 함수를 호출하는 도구를 작성 중입니다. 기본적으로 일부 파일은 GUI에로드되고 파일은 일부 subprocess.run-command를 사용하여 외부 기능으로 전송됩니다. 이 기능은 완전히 실행하는 데 시간이 오래 걸리며이 시간 동안 도구는 비활성화됩니다. 따라서 내 목표는 함수를 실행하는 데 걸리는 시간 동안 QLabel / QPushButton의 색상 / 아이콘 / ...을 "녹색"에서 "빨간색"으로 변경하는 것입니다. 함수 호출이 완료된 후 색상을 다시 "녹색"으로 변경하고 싶습니다. 따라서 상태 램프를 모방해야합니다.

lamp = QtWidgets.QPushButton(self.centralwidget)
lamp.setStyleSheet("background-color: red")
# external function call
lamp.setStyleSheet("background-color: green")

그러나 외부 함수 호출에 QFileDialog 또는 프로그램 실행을 중지하는 다른 항목이 포함되어 있지 않으면 램프 레이블이 빨간색으로 바뀌지 않습니다.

스타일 시트 대신 팔레트를 사용해 보았습니다. 나는 또한 PyQtSignals를 사용하여 문제를 해결하려고 시도했지만 아무것도 작동하지 않았습니다.

나는 또한 레이블을 사용하여 색상을 업데이트하도록 강제하려고했습니다.

lamp.style().unpolish(lamp);
lamp.style().polish(lamp);
lamp.update();

나는 이것에 대한 해결책을 환영합니다! 미리 감사드립니다!

버튼

이것이 당신이 원하는 것인지 잘 모르겠습니다.

하지만 QThread를 사용하여 하위 프로세스를 실행해야한다고 생각합니다.

QtThread 예제를 제공하면 직접 수정하고 있습니다.

또는 Google에서 QThread를 검색합니다.

class YourQt:
    code...

    def example(self):
        self.lamp = QtWidgets.QPushButton(self.centralwidget)
        self.lamp.setStyleSheet("background-color: red")
        self.lamp_thread = LampThread()
        self.lamp_thread.lamp_signal .connect(self.example_finish)
        self.lamp_thread.start()

    def example_finish(self, signal):
        self.lamp.setStyleSheet("background-color: green")


class LampThread(QtCore.QThread):
    lamp_signal = QtCore.pyqtSignal(bool)

    def __init__(self):
        super(LampThread, self).__init__()

    def run(self):
        # subprocess.run-command
        self.lamp_signal.emit(True)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관