📌  相关文章
📜  PyQt5 ComboBox - 用户输入的项目存储在选定的位置(1)

📅  最后修改于: 2023-12-03 14:45:46.885000             🧑  作者: Mango

PyQt5 ComboBox - 用户输入的项目存储在选定的位置

简介

在 PyQt5 中,ComboBox 是一个允许用户选择某个项目的控件。本文介绍如何通过 ComboBox 实现用户输入的项目能被存储在选定的位置。

实现

首先,我们需要导入 PyQt5 和 sys 模块。然后,我们创建一个类,继承自 QWidget 类。

导入模块
import sys
from PyQt5.QtWidgets import QWidget, QLabel, QComboBox, QApplication
创建类
class Combo(QWidget):
    def __init__(self):
        super().__init__()

        self.label = QLabel("请选择您的情感状态:", self)
        self.label.move(50, 50)

        self.comboBox = QComboBox(self)
        self.comboBox.move(50, 80)
        self.comboBox.addItem("")
        self.comboBox.addItem("开心")
        self.comboBox.addItem("平静")
        self.comboBox.addItem("难过")
        self.comboBox.addItem("愤怒")

我们创建一个 Combo 类,继承自 QWidget 类,然后在其构造函数中,我们实例化 QLabel 和 QComboBox 两个控件。我们在 QLabel 中设置一段提示文本,然后在 QComboBox 中添加四个项目,其中一个为空字符串。

获取用户输入

接下来,我们需要获取用户选择的项目,我们可以在 ComboBox 组件的 currentIndexChanged 信号上绑定一个响应函数。当用户选择了一个项目,这个响应函数就会被调用。

将下面这段代码添加到 Combo 类的构造函数中:

        self.comboBox.currentIndexChanged.connect(self.selectionChange)

然后实现响应函数:

    def selectionChange(self, i):
        emotions = ["", "开心", "平静", "难过", "愤怒"]
        self.label.setText(f"您当前的情感状态是:{emotions[i]}")

这个响应函数接收一个整数参数 i,表示用户选择的项目的索引。我们将这个索引和四种情感状态的字符串组成一个列表,然后使用这个索引从列表中取出相应的情感状态字符串。

最后,我们使用 QLabel 的 setText 方法更新 Label 上的文本。

运行程序

在 Combo 类的末尾添加如下代码,即可运行程序。

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Combo()
    ex.setGeometry(300, 300, 300, 150)
    ex.show()
    sys.exit(app.exec_())
完整代码
import sys
from PyQt5.QtWidgets import QWidget, QLabel, QComboBox, QApplication


class Combo(QWidget):
    def __init__(self):
        super().__init__()

        self.label = QLabel("请选择您的情感状态:", self)
        self.label.move(50, 50)

        self.comboBox = QComboBox(self)
        self.comboBox.move(50, 80)
        self.comboBox.addItem("")
        self.comboBox.addItem("开心")
        self.comboBox.addItem("平静")
        self.comboBox.addItem("难过")
        self.comboBox.addItem("愤怒")

        self.comboBox.currentIndexChanged.connect(self.selectionChange)

        self.setGeometry(300, 300, 300, 150)
        self.setWindowTitle('ComboBox')
        self.show()

    def selectionChange(self, i):
        emotions = ["", "开心", "平静", "难过", "愤怒"]
        self.label.setText(f"您当前的情感状态是:{emotions[i]}")


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