在为科学目的开发应用程序时,我努力向QListWidget添加项目。我没有找到PyQt5的任何文档,所以决定在这里问。我不能确定QListWidget的使用是否正确,所以如果我错了,请纠正我。
UPD:下一次迭代。
我做了什么。
我将文件夹内容的名称和路径放入数组中。在第一列中我获取文件的名称,在第二列中获取其路径。
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
})
});
[[' exmpl1.xlsx',' exmpl2.xlsx'],[' / Users / Graygood / Desktop / Science comput / Application / exmpl1.xlsx',' / Users / Graygood / Desktop / Science COMPUT /应用/ exmpl2.xlsx']]
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
我现在需要什么。
单击按钮,选择文件时,应将文件路径提供给过程功能。我该怎么做?如何调用所选文件?
过程函数是函数,它获取所选项的路径,使用self.sampleChoose_list.addItems(sample_directory[0])
读取它并使一些数组工作。类似的东西:
pandas.read_excel(sample_directory[0][0])
答案 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.
成为类变量,以便可以从类的方法中访问它。