PyQt5 – QDoubleSpinBox

  • Post category:Python

PyQt5是一个python的GUI编程框架,其中的QDoubleSpinBox是一个能够让用户输入浮点数的控件。使用QDoubleSpinBox,需要先导入PyQt5模块。代码如下所示:

from PyQt5.QtWidgets import QDoubleSpinBox

接下来可以创建QDoubleSpinBox的实例,代码如下所示:

spinbox = QDoubleSpinBox()

QDoubleSpinBox有多个属性和方法,下面讲解几个常用的:

1. 设置范围

可以使用setMinimum()和setMaximum()方法设置QDoubleSpinBox的范围,代码如下所示:

spinbox.setMinimum(0.1)
spinbox.setMaximum(99.9)

2. 设置步长

可以使用setSingleStep()方法设置QDoubleSpinBox的步长,默认为1.0,代码如下所示:

spinbox.setSingleStep(0.1)

3. 获取值

可以使用value()方法获取当前QDoubleSpinBox的值,代码如下所示:

value = spinbox.value()

示例1:计算面积

下面是一个示例,使用QDoubleSpinBox计算矩形的面积。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QFormLayout, QLabel, QDoubleSpinBox

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('计算矩形面积')
        self.setGeometry(300, 300, 400, 100)

        form = QFormLayout()
        self.width = QDoubleSpinBox()
        self.height = QDoubleSpinBox()

        self.width.setRange(0, 100)
        self.width.setSingleStep(0.1)
        self.height.setRange(0, 100)
        self.height.setSingleStep(0.1)

        form.addRow(QLabel('宽度:'), self.width)
        form.addRow(QLabel('高度:'), self.height)

        self.result = QLabel('请输入矩形的宽度和高度')
        form.addRow(QLabel('计算结果:'), self.result)

        self.width.valueChanged.connect(self.computeArea)
        self.height.valueChanged.connect(self.computeArea)

        self.setLayout(form)

    def computeArea(self):
        width = self.width.value()
        height = self.height.value()

        area = width * height
        self.result.setText('矩形的面积为:%.2f' % area)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

示例2:转换温度

下面是另一个示例,使用QDoubleSpinBox将华氏温度转换为摄氏温度。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QFormLayout, QLabel, QDoubleSpinBox

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('华氏温度转换')
        self.setGeometry(300, 300, 400, 100)

        form = QFormLayout()
        self.fahrenheit = QDoubleSpinBox()
        self.celsius = QLabel('')

        self.fahrenheit.setRange(-459.67, 1000)
        self.fahrenheit.setSingleStep(0.1)

        form.addRow(QLabel('华氏温度:'), self.fahrenheit)
        form.addRow(QLabel('摄氏温度:'), self.celsius)

        self.fahrenheit.valueChanged.connect(self.convert)

        self.setLayout(form)

    def convert(self):
        f = self.fahrenheit.value()
        c = (f - 32) * 5 / 9
        self.celsius.setText('%.2f °C' % c)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

以上是使用QDoubleSpinBox的完整攻略,希望对您有所帮助!