[파이썬] PyQt 스피너 (`QSpinBox`) 위젯

PyQt is a powerful library that allows developers to create graphical user interfaces (GUIs) in Python. One of the useful widgets provided by PyQt is the QSpinBox widget, which allows users to input numerical values within a specified range.

In this blog post, we will explore how to use the QSpinBox widget in PyQt to create a spinner widget with a custom range and step size.

Getting Started

To use the QSpinBox widget, you need to have PyQt installed on your system. If you haven’t installed it yet, you can do so by running the following command:

pip install PyQt5

Creating a QSpinBox Widget

To create a QSpinBox widget, you first need to import the necessary classes from the PyQt library. Here’s an example code snippet that demonstrates how to create a simple QSpinBox widget:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QSpinBox

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = QWidget()
    
    spinner = QSpinBox(window)
    spinner.setGeometry(50, 50, 100, 30)
    spinner.setMinimum(0)
    spinner.setMaximum(100)
    
    window.show()
    
    sys.exit(app.exec())

In the above code, we create a new instance of the QSpinBox class and set the range of acceptable values using the setMinimum and setMaximum methods. The setGeometry method is used to position and resize the spinner widget within the main window.

Customizing the Appearance

PyQt allows you to customize the appearance of the QSpinBox widget by applying different styles and properties. Here’s an example code snippet that demonstrates how to change the appearance of the spinner widget:

spinner.setStyleSheet("QSpinBox {background-color: #e0e0e0; font-size: 16px;}")

In the above code, we use the setStyleSheet method to set the background color and font size of the spinner widget. You can specify any CSS properties to customize the appearance according to your preferences.

Handling Value Changes

The QSpinBox widget emits a valueChanged signal whenever the value is modified by the user. You can connect this signal to a custom function to perform any necessary actions. Here’s an example code snippet that demonstrates how to handle value changes:

def handle_value_change(value):
    print(f"New value: {value}")

spinner.valueChanged.connect(handle_value_change)

In the above code, we define a function handle_value_change that takes the new value as a parameter and prints it to the console. We then connect this function to the valueChanged signal of the QSpinBox widget using the connect method.

Conclusion

The QSpinBox widget provided by PyQt is a versatile tool for accepting numerical input from the user. With its customizable appearance and ability to handle value changes, it can be easily integrated into any PyQt application.

In this blog post, we covered the basics of creating a QSpinBox widget and customizing its appearance. We also demonstrated how to handle value changes using the valueChanged signal.

I hope this tutorial was helpful in understanding how to use the QSpinBox widget in PyQt. Happy coding!