在QListWidget PyQt5中获取所选项的名称

时间:2018-02-22 10:51:42

标签: python pyqt pyqt5

在为科学目的开发应用程序时,我努力向QListWidget添加项目。我没有找到PyQt5的任何文档,所以决定在这里问。我不能确定QListWidget的使用是否正确,所以如果我错了,请纠正我。

UPD:下一次迭代。

我做了什么。

  1. 我将文件夹内容的名称和路径放入数组中。在第一列中我获取文件的名称,在第二列中获取其路径。

        var vectorSource = new ol.source.Vector({});
        var i = 0;
    
    
    this.abc.forEach(element => {
            i++;
            var latitude = element[0];
            var longitude = element[0];
            var iconFeature = new ol.Feature({
                geometry: new 
                ol.geom.Point(ol.proj.transform([parseFloat(latitude), 
                parseFloat(longitude)], 'EPSG:4326', 'EPSG:3857')),
                data: element,
                name: layerselection + i
            });
            vectorSource.addFeature(iconFeature);
        });
    
    
    
    var clusterSource = new ol.source.Cluster({
            distance: 30,
            source: vectorSource
        });
        var styleCache = {};
    
         //create the style
        var iconSuccessStyle = new ol.style.Style({
            image: new ol.style.Icon(/** @type {olx.style.IconOptions} */({
                anchor: [0.5, 46],
                anchorXUnits: 'fraction',
                anchorYUnits: 'pixels',
                opacity: 0.75,
                src: './assets/img/xyz.svg'
    
            }))
        });
    
        this.vectorLayer1 = new ol.layer.Vector({
            source: clusterSource,
            style: function (feature) {
                var size = feature.get('features').length;
                var style = styleCache[size];
    
                if (size == 1) {
                    style = iconSuccessStyle;
                    if (!styleCache[size]) {
                        styleCache[size] = {};
                    }
                    styleCache[size]['Green'] = style;
                }
    
    
    else if (!style) {
                    style = new ol.style.Style({
                        image: new ol.style.Circle({
                            radius: 16,
                            stroke: new ol.style.Stroke({
                                color: '#84B1A1',
                                width: 4
                            }),
                            fill: new ol.style.Fill({
                                color: '#00584D'
                            })
                        }),
                        text: new ol.style.Text({
                            text: size.toString(),
                            fill: new ol.style.Fill({
                                color: '#fff'
                            })
                        })
                    });
                    styleCache[size] = style;
                }
                return style;
            }
        });
    self.map = new ol.Map({
        layers: [new ol.layer.Tile({ source: new ol.source.OSM({ "url":
             "https://mmmm.../World_Street_Map/MapServer/tile/{z}/{y}/{x}" 
            }) }), this.vectorLayer],
        target: document.getElementById('map'),
        controls: [],
        view: new ol.View({
            center: ol.proj.transform([10.4515, 51.1657], 
            'EPSG:4326','EPSG:3857'),
            zoom: 5
        })
    });
    
  2.   

    [[' exmpl1.xlsx',' exmpl2.xlsx'],[' / Users / Graygood / Desktop / Science   comput / Application / exmpl1.xlsx',' / Users / Graygood / Desktop / Science   COMPUT /应用/ exmpl2.xlsx']]

    1. 接下来,我将sample_directory = [] sample_files = [] for (dirpath, dirnames, filenames) in walk('./Samples'): sample_files.extend(filenames) break paths = [] for i in range(len(sample_files)): path = os.path.realpath(sample_files[i]) paths.append(path) sample_directory.append(sample_files) sample_directory.append(paths) 的第一列添加到QListWidget sample_directory
    2. 我现在需要什么。

      单击按钮,选择文件时,应将文件路径提供给过程功能。我该怎么做?如何调用所选文件?

      过程函数是函数,它获取所选项的路径,使用self.sampleChoose_list.addItems(sample_directory[0])读取它并使一些数组工作。类似的东西:

      pandas.read_excel(sample_directory[0][0])

1 个答案:

答案 0 :(得分:0)

要从QListWidget获取所选行,请使用self.sampleChoose_list.selectedIndexes()[0].row()(如果选择了多个,[0]此处将仅为您提供第一行。您可以使用此索引获取与所选文件名对应的路径,您可以从process函数调用此文件。

def process(self):
    index = self.sampleChoose_list.selectedIndexes()[0].row()
    path_of_a_chosen_file = self.sample_directory[1][index]
    sample = pd.read_excel(path_of_a_chosensen_file)

要使此解决方案有效,您必须通过在前面添加sample_directory来使self.成为类变量,以便可以从类的方法中访问它。