当我使用 "currentIndex()" 时

2024-05-19 17:38:47 发布

您现在位置:Python中文网/ 问答频道 /正文

因为这个问题,我在学校的作业上耽搁了好几个小时。我需要检查ListWidget中当前所选项目的索引号(作为整数)

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMessageBox, QListView
from PyQt5.QtGui import QPixmap
import Ui_countries

class MyForm(QMainWindow, Ui_countries.Ui_mainWindow):
    # DON'T TOUCH!
    def __init__(self, parent=None):
        super(MyForm, self).__init__(parent)
        self.setupUi(self)
    # END DON'T TOUCH

        # EVENT HOOKS HERE
        self.countryList.itemClicked.connect(self.CountrySelected)
        self.actionLoad_Countries.triggered.connect(self.LoadCountries)
        self.sqUnits.currentIndexChanged.connect(self.SqUnits)
        #self.updatePopulation.itemClicked.connect(self.updateMemory)

    # RESPONSES HERE    


   # def updateMemory(self):



    def LoadCountries(self):
        global namelist
        global populationlist
        global arealist
        namelist = []
        populationlist = []
        arealist = []

        objFile = open("GUI/countries.txt")

        for line in objFile:
            line = line.replace("\n","")
            lineList = line.split(",")
            self.countryList.addItem(lineList[0])  
            namelist.append(lineList[0])
            populationlist.append(lineList[1])
            arealist.append(lineList[2])
        objFile.close()

    def CountrySelected(self,selectedCountryIndex):

        QMessageBox.information(self,"Country changed!",selectedCountryIndex.text())
        strCountryName = selectedCountryIndex.text()
        strCountryName = strCountryName.replace(" ", "_")
        imagePixmap = QPixmap(f"GUI/Flags/{strCountryName}")
        strCountryName = strCountryName.replace("_", " ")
        self.lblCountryName.setText(strCountryName)
        self.flag.setPixmap(imagePixmap)
        self.flag.resize(imagePixmap.width(),imagePixmap.height())
        idx = self.countryList.currentIndex()
        # self.populationbox.setText(populationlist[idx])
        # selectedCountryIndex.index()
        #^^^^^^^^^^^ useful code

        print(int(strCountryName))

    def SqUnits(self):
        QMessageBox.information(self,"Event Received","Please convert between different units.")
        if self.sqUnits.currentText() == "Sq. Miles":
            self.totalareabox.setText("YAAAAA")
        else:
            self.totalareabox.setText("YEEEE")

# DON'T TOUCH
if __name__ == "__main__":
    app = QApplication(sys.argv)
    the_form = MyForm()
    the_form.show()
    sys.exit(app.exec_())

重点领域将是选定的职能。每当我尝试运行idx = self.countryList.currentIndex()而不是整数时,如果我尝试打印idx,就会得到'PyQt5.QtCore.QModelIndex object at 0x051A6470'。我的老师要我们用pyqt,而我没有这方面的经验,所以我有点吓坏了


Tags: importselfdefconnectsyslinepyqt5idx