python - 尝试从 ComboBox 的字典中获取一个值并在 textEdit 中插入键
问题描述
我有一个字典和一个显示字典值的组合框,我需要在 textEdit 中打印用户选择的字典值的键。这是我的代码。
import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QApplication, QDialog, QMainWindow
from PyQt5.uic import loadUi
from math import pi
class MainPage(QMainWindow):
classi = {None : None, "C25/30" : float(14.17),
"C28/35" : float(15.87), "C32/40" : float(18.13),
"C35/45" : float(19.83), "C40/50" : float(22.6),
"C45/55" : float(25.5), "C50/60" : float(28.3)}
Acciaio = {None : None, "B450C" : float(391.3)}
Ferri = {14 : float(1.54), 16 : float(2.01),
18 : float(2.54), 20 : float(3.14), 22 : float(3.8)}
N = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def __init__(self):
super(MainPage, self).__init__()
loadUi('Concrete.ui', self)
x = self.fillCombobox()
y = self.fillCombobox_2()
z = self.fillCombobox_3()
v = self.fillCombobox_4()
w = self.fillCombobox_5()
a = self.fillCombobox_6()
b = self.fillCombobox_7()
c = self.fillCombobox_8()
def fillCombobox(self):
for i in self.classi:
self.comboBox.addItem(i)
def fillCombobox_2(self):
for i in self.Acciaio:
self.comboBox_2.addItem(i)
def retrieveText(self):
x = self.comboBox.currentData()
self.textEdit.setText(x)
app = QApplication(sys.argv)
widget = MainPage()
widget.show()
sys.exit(app.exec_())
我知道函数retrieveText 不能满足我的要求,但这是一次尝试,而且它也没有提供任何输出。
解决方案
您必须通过 itemData 保存与键关联的值,并在选择项目时获取它。
class MainPage(QMainWindow):
classi = {
None: None,
"C25/30": 14.17,
"C28/35": 15.87,
"C32/40": 18.13,
"C35/45": 19.83,
"C40/50": 22.6,
"C45/55": 25.5,
"C50/60": 28.3,
}
def __init__(self):
super(MainPage, self).__init__()
loadUi("Concrete.ui", self)
self.comboBox.currentIndexChanged[int].connect(self.retrieveText)
self.fillCombobox()
def fillCombobox(self):
for key, value in self.classi.items():
self.comboBox.addItem(key, value)
@pyqtSlot(int)
def retrieveText(self, index):
x = self.comboBox.itemData(index)
if x is not None:
self.textEdit.setText(str(x))
推荐阅读
- django - django rest注册api报错:此字段为必填项
- docker - 需要重启时如何修改在Docker中运行的Payara的配置
- apache-kafka - 在集群中清理 Kafka 主题
- java - 如何使用 JDBC 以安全模式(kerberos+ssl)连接配置单元?
- r - 如何使用参数化过滤器与来自 power bi 的 r 数据进行通信
- continuous-integration - Circle CI 无法添加项目,它也不存在于工作流中
- node.js - 通过在猫鼬中填充匹配结果来查找文档
- javascript - WebStorm 在 TypeScript 上下文中不显示纯 JS 库的自动完成
- android - 可滚动的 LinearLayout 高度限制
- android - DialogFragment 显示具有不同“片段”的步骤