☘️

009 QDial (다이얼 위젯)

1. 코드

import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QPushButton, QDial class 다이얼위젯(QWidget): def __init__(self): super().__init__() self.UI초기화() def UI초기화(self): self.dial = QDial(self) self.dial.move(30, 20) self.dial2 = QDial(self) self.dial2.move(200, 20) self.dial2.setRange(0, 50) self.dial2.setNotchesVisible(True) self.label1 = QLabel('다이얼 1값', self) self.label1.move(40, 130) self.label2 = QLabel('다이얼 2값', self) self.label2.move(210, 130) btn = QPushButton('기본값으로 되돌리기', self) btn.move(115, 200) self.dial.valueChanged.connect(self.chageValue) self.dial2.valueChanged.connect(self.chageValue) btn.clicked.connect(self.btn_clicked) self.setGeometry(300, 300, 500, 500) self.setWindowTitle('QLineEdit') self.show() def btn_clicked(self): self.dial.setValue(0) self.dial2.setValue(0) def chageValue(self): self.label1.setText(str(self.dial.value())) self.label2.setText(str(self.dial2.value())) 프로그램무한반복 = QApplication(sys.argv) 실행인스턴스 = 다이얼위젯() 프로그램무한반복.exec_()

2. 상세 설명

다이얼은 공식문서에서 얻을 수 있는 정보가 많지 않아 코드 설명에서 설명해드리도록 하겠습니다.
 
self.dial2.setRange(0, 50) self.dial2.setNotchesVisible(True)
  • 범위 지정은 setRange(Start, Stop)으로 합니다.
  • 노치(결과 창 참고, 주위로 범위를 표시할 수 있는 눈금) 를 표시하기 위해서는 setNotchesVisible() 사용합니다. 기본적으로는 False로 보여주지 않습니다.
 
self.dial.valueChanged.connect(self.changeValue) self.dial2.valueChanged.connect(self.changeValue) btn.clicked.connect(self.btn_clicked)
  • valueChanged은 다이얼값이 변경될 때 시그널입니다.
 
def changeValue(self): self.label1.setText(str(self.dial.value())) self.label2.setText(str(self.dial2.value()))
  • 다이얼의 현재 value(값)을 가져와 라벨에 업데이트합니다.
 
def btn_clicked(self): self.dial.setValue(0) self.dial2.setValue(0)
  • 버튼 클릭시 초기화합니다.

3. 실행 화면

다이얼 2의 노치 표시다이얼 2의 노치 표시
다이얼 2의 노치 표시
다이얼 2같은 경우엔 범위를 50까지만 지정했기 때문에 보이는것 처럼 Maximum값은 50다이얼 2같은 경우엔 범위를 50까지만 지정했기 때문에 보이는것 처럼 Maximum값은 50
다이얼 2같은 경우엔 범위를 50까지만 지정했기 때문에 보이는것 처럼 Maximum값은 50
버튼 클릭시 초기화버튼 클릭시 초기화
버튼 클릭시 초기화