跳至正文
View Categories

< 1 min read

    主要内容 #

  1. QSpinBox复合实践

完成效果 #

完成本节课程,能学会在窗口应用程序中增加SpinBox,并且实现将点击的数值展示在QLineEdit中,并且当数值增加到一定时,弹出QMessageBox提示。
效果如下:

收获 #

学习完本节内容,我们会了解QComboBox复合实践的具体步骤,实现控件间的信息传递等进阶操作。

1.QSpinBox复合实践 #

在本复合实践中,首先在窗口应用程序中新增QSpinBox计数器,并通过信号槽机制实现当改变计数器数值时,该数值在QLineEdit上显示。
并且当计数器数值超过50时,弹出提示框显示提示信息。
以下是代码实现示例:

from PyQt5.QtWidgets import QWidget, QLineEdit,QSpinBox, QApplication, QMessageBox, QLabel
import sys

class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()


    def initUI(self):      
        self.spinbox = QSpinBox(self)    # 创建一个计数器控件
        self.spinbox.setMinimum(2)       # 设置计数器的下界
        self.spinbox.setMaximum(100)     # 设置计数器的上界
        self.spinbox.setSingleStep(20)   # 设置计数器的步长值,步长为20代表每次计数值增加20
        # 如果用户改变了计数器数值,则触发valueChanged信号,该信号与槽函数showValued相连
        self.spinbox.valueChanged.connect(self.showValue)
        self.edit = QLineEdit(self)   # 创建一个文本编辑框
        
        # 移动计数器和编辑框的位置
        self.spinbox.move(50, 50)
        self.edit.move(50, 100)
        

        self.setGeometry(300, 300, 400, 400)
        self.setWindowTitle('QSpinBox')
        self.show()


    def showValue(self):  # 槽函数
        # 让编辑框显示计数器的数值
        self.edit.setText('current values:'+str(self.spinbox.value()))
        if self.spinbox.value()>50:  # 若计数器数值超过50,则弹出提示框
            QMessageBox.information(self, "提示框", '计数器数值已经超过50了!')

app = QApplication(sys.argv)    # 创建应用程序
ex = Example()  # 创建窗口对象
sys.exit(app.exec_())   # 设置关闭窗口后结束进程

拓展练习:尝试更改计数器的上下界和步长值并运行程序。

小结 #

  • 学习了如何添加QSpinBox控件。
  • 学习了如何将QSpinBox控件的信号关联到槽函数,然后槽函数进行处理。
  • 习题 #

    1. 习题1:类似地,将QLineEdit改为QLabel,改变计数器数值时显示该数值在QLabel上。