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的完整攻略,希望对您有所帮助!