尝试从 ComboBox 的字典中获取值并将键插入 textEdit

Posted

技术标签:

【中文标题】尝试从 ComboBox 的字典中获取值并将键插入 textEdit【英文标题】:Trying to take a value from a dictionary of a ComboBox and instert the key in a textEdit 【发布时间】:2019-11-23 16:04:24 【问题描述】:

我有一个字典和一个显示字典值的组合框,我需要在 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 不能满足我的要求,但这是一次尝试,而且它没有提供任何输出。

【问题讨论】:

【参考方案1】:

你必须通过 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))

【讨论】:

以上是关于尝试从 ComboBox 的字典中获取值并将键插入 textEdit的主要内容,如果未能解决你的问题,请参考以下文章

从python中两个数字之间的字典中获取所有键

比较两个字典并将识别的键和值差异添加到新字典

如何从python中的字典列表中获取值?

在删除该位置的上一个键之后,将另一个键和值插入字典?

从 csv.DictReader 中查找字典值

尝试使用 C# 和 OleDb 创建外键并将其值插入到 .mdb 数据库中