尝试从 ComboBox 的字典中获取一个值并在 textEdit 中插入键 [英] Trying to take a value from a dictionary of a ComboBox and instert the key in a textEdit

查看:52
本文介绍了尝试从 ComboBox 的字典中获取一个值并在 textEdit 中插入键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个字典和一个显示字典值的 ComboBox,我需要在 textEdit 中打印用户选择的字典值的键.这是我的代码.

I have a dictionary and a ComboBox that shows dictionary's values, i need to print in a textEdit the key of the dictionary's value chosen by the user. Here's my code.

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 没有达到我想要的效果,但这是一次尝试,而且它也没有给出任何输出.

I know that the function retrieveText doesn't make what i want but it was a try and also this doesn't give any output.

推荐答案

必须通过 itemData 保存与键关联的值,并在选择项时获取.

You have to save the values associated with the keys through itemData and obtain it when an item is selected.

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 中插入键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆