📅  最后修改于: 2023-12-03 14:45:46.885000             🧑  作者: Mango
在 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_())