Apr-14-2023, 09:34 AM
(This post was last modified: Apr-14-2023, 09:34 AM by Axel_Erfurt.)
You can connect QComboBox.currentIndexChanged() to the function
import sys from PyQt6.QtCore import Qt from PyQt6.QtWidgets import ( QApplication, QCheckBox, QComboBox, QDateEdit, QDateTimeEdit, QDial, QDoubleSpinBox, QFontComboBox, QLabel, QLCDNumber, QLineEdit, QMainWindow, QProgressBar, QPushButton, QRadioButton, QSlider, QSpinBox, QTimeEdit, QVBoxLayout, QWidget, ) import bs4 from bs4 import BeautifulSoup import requests #import urllib3 as urllib # the lib that handles the url stuff import urllib.request provs = ['AB','BC','MB','NB','NL','NS','NT','NU','ON','PE','QC','SK','YT'] for prov in provs: print(prov) url = 'https://dd.weather.gc.ca/hydrometric/csv/' + prov + '/daily/' + prov + '_daily_hydrometric.csv' print(url) #https://dd.weather.gc.ca/hydrometric/doc/hydrometric_StationList.csv def getStationsProv(provis): data = urllib.request.urlopen('https://dd.weather.gc.ca/hydrometric/doc/hydrometric_StationList.csv') # it's a file like object and works just like a file dataFiltered = [] for line in data: # files are iterable #print(line.decode()) data = line.decode().split(",") # dataFiltered.append("Station1") if data[4] == provis : arrayData = str(data[0]) + '-' + str(data[1]).replace('"','').replace(' ','_') dataFiltered.append(arrayData) # print(arrayData) # print(dataFiltered) # dataFiltered.append("Station2") return dataFiltered # Subclass QMainWindow to customize your application's main window class MainWindow(QMainWindow): def getValue(self): provIs = self.cbUser.itemData(self.qcb1.currentIndex()).toPyObject() print(str(id_us)) def __init__(self): super().__init__() self.setWindowTitle("Env Canada hydrometric data") self.setFixedWidth(500) layout = QVBoxLayout() label1 = QLabel("Select a province") #, layout.addWidget(label1) self.qcb1 = QComboBox() #, self.qcb1.addItems(provs) self.qcb1.currentIndexChanged.connect(self.qcb1_index_changed) layout.addWidget(self.qcb1) self.qcb2 = QComboBox() layout.addWidget(self.qcb2) widget = QWidget() widget.setLayout(layout) self.setCentralWidget(widget) self.qcb1_index_changed() def qcb1_index_changed(self): self.qcb2.clear() print("qcb1_index_changed") df = getStationsProv(self.qcb1.currentText()) self.qcb2.addItems(df) app = QApplication(sys.argv) window = MainWindow() window.show() app.exec()