Qt/PyQt5 강좌

호버와 클릭 효과 있는 PyQt5 QPushButton 예제

webnautes 2024. 11. 8. 23:12
반응형

호버와 클릭 효과 있는 PyQt5 QPushButton 예제입니다.



최초작성 2024. 11. 8





import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QWidget, QVBoxLayout, QLabel
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.count = 0  # 카운터 초기화
       
        # 윈도우 설정
        self.setWindowTitle("버튼 예제")
        self.setFixedSize(300, 300)
       
        # 메인 위젯과 레이아웃 설정
        main_widget = QWidget()
        self.setCentralWidget(main_widget)
        layout = QVBoxLayout()
        main_widget.setLayout(layout)
       
        # 레이블 스타일 정의
        label_style = """
            QLabel {
                color: #2c3e50;
                background-color: #ecf0f1;
                padding: 10px;
                border-radius: 5px;
                border: 1px solid #bdc3c7;
            }
        """
       
        # 버튼 스타일 정의
        button_style = """
            QPushButton {
                background-color: #4a90e2;
                color: white;
                border: none;
                padding: 10px 20px;
                border-radius: 5px;
                font-size: 13pt;
                min-width: 120px;
            }
            QPushButton:hover {
                background-color: #357abd;
            }
            QPushButton:pressed {
                background-color: #2a5d8c;
            }
        """
       
        # 숫자 레이블 생성
        self.number_label = QLabel("0")
        self.number_label.setStyleSheet(label_style)
        self.number_label.setAlignment(Qt.AlignCenter)
        self.number_label.setFont(QFont("Arial", 20, QFont.Bold))
       
        # 버튼 생성
        self.button = QPushButton("클릭하세요")
        self.button.setStyleSheet(button_style)
        self.button.clicked.connect(self.button_clicked)
       
        # 위젯들을 레이아웃에 추가
        layout.addStretch()
        layout.addWidget(self.number_label)
        layout.addWidget(self.button, alignment=Qt.AlignCenter)
        layout.addStretch()

    def button_clicked(self):
        self.count += 1
        self.number_label.setText(str(self.count))

if __name__ == "__main__":
    app = QApplication(sys.argv)
   
    window = MainWindow()
    window.show()
   
    sys.exit(app.exec_())




반응형