Topic: Valore preimpostato in ComboBox  (Letto 123 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline paparucino

  • python unicellularis
  • *
  • Post: 4
  • Punti reputazione: 0
    • Mostra profilo
Valore preimpostato in ComboBox
« il: Gennaio 06, 2021, 14:53 »
Buongiorno a tutti,
ho un problemino di questo genere. 
Due  combobox , uno per la scelta di anno, l'altro per la scelta di mese. Al run dello script vengono visualizzati correttamente i valori (e.g. 2021 e Gennaio). Il problema è che quando faccio il select ottengo errore "perchè non è stato selezionato nulla.

La parte ui:

class Extract_ui():
    def extract_part_one(self):
        self.Extract_tab = QtWidgets.QWidget()
        self.Extract_tab.setObjectName("Extract_tab")
        self.Extract_Main_label = QtWidgets.QLabel(self.Extract_tab)
        self.Extract_Main_label.setGeometry(QtCore.QRect(20, 10, 900, 41))
        self.Extract_Main_label.setObjectName("patience_label")
        font = QtGui.QFont()
        font.setFamily("Free Mono")
        font.setPointSize(13)
        self.Extract_Main_label.setFont(font)
        self.Extract_Main_label.setAlignment(QtCore.Qt.AlignCenter)
        self.Extract_Main_label.setFrameShadow(QtWidgets.QFrame.Raised)
        self.Extract_This_label = QtWidgets.QLabel(self.Extract_tab)
        self.Extract_This_label.setGeometry(QtCore.QRect(20, 30, 900, 41))
        self.Extract_This_label.setObjectName("this_label")
        font = QtGui.QFont()
        font.setFamily("Free Mono")
        font.setPointSize(11)
        self.Extract_This_label.setFont(font)
        self.Extract_This_label.setStyleSheet("color: #0000FF; ")
        self.Extract_This_label.setAlignment(QtCore.Qt.AlignCenter)
        self.Extract_This_label.setFrameShadow(QtWidgets.QFrame.Raised)
        self.Extract_Info_label = QtWidgets.QLabel(self.Extract_tab)
        self.Extract_Info_label.setGeometry(QtCore.QRect(220, 90, 500, 30))
        self.Extract_Info_label.setObjectName("test_label")
        font = QtGui.QFont()
        font.setFamily("Free Mono")
        font.setPointSize(12)
        self.Extract_Info_label.setFont(font)
        self.Extract_Info_label.setStyleSheet("color: #000099; background-color: #BFBFBF; border: 1px solid black;")
        self.Extract_Info_label.setAlignment(QtCore.Qt.AlignCenter)
        self.Extract_Info_label.setFrameShadow(QtWidgets.QFrame.Raised)
        self.Extract_Image_label = QtWidgets.QLabel(self.Extract_tab)
        self.Extract_Image_label.setGeometry(QtCore.QRect(990, 5, 90, 80))
        self.Extract_Image_label.setObjectName("image_label")
        self.pixmap = QPixmap('ohio.png')
        self.Extract_Image_label.setScaledContents(True)
        self.Extract_Image_label.setPixmap(self.pixmap)
        self.Extract_Year_select = QtWidgets.QComboBox(self.Extract_tab)
        self.Extract_Year_select.setGeometry(QtCore.QRect(380, 140, 80, 20))
        self.Extract_Year_select.setObjectName("Extract_Year_select")
        self.Extract_Month_select = QtWidgets.QComboBox(self.Extract_tab)
        self.Extract_Month_select.setGeometry(QtCore.QRect(480, 140, 100, 21))
        self.Extract_Month_select.setObjectName("Extract_Month_select")
        self.Extract_Elapsed_label = QtWidgets.QLabel(self.Extract_tab)
        self.Extract_Elapsed_Result_label = QtWidgets.QLabel(self.Extract_tab)
        self.Extract_Add_btn = QtWidgets.QPushButton(self.Extract_tab)
        self.Extract_Add_btn.setGeometry(QtCore.QRect(440, 169, 70, 20))
        self.Extract_Add_btn.setObjectName("Extract_Add_btn")
        self.MainTabs_tabWidget.addTab(self.Extract_tab, "")
        self.Extract_Close_btn = QtWidgets.QPushButton(self.Extract_tab)

    def extract_part_two(self): _translate = QtCore.QCoreApplication.translate

        self.Extract_Main_label.setText(_translate("Library_main", "Questa utility importa un file xlsx nel DB di sistema."))
        self.Extract_This_label.setText(_translate("Library_main", "Il file deve trovarsi almeno in /media/Dropbox"))
        self.Extract_Info_label.setText(_translate("Library_main", "Inserire anno e mese del file .xlsx da importare"))
        self.Extract_Year_select.addItems(['2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024'])
        self.this_year = strftime("%Y")
        self.Extract_Year_select.setCurrentText(self.this_year)
        self.Extract_Year_select.currentTextChanged.connect(self.AnnoSelected_func)
        self.Extract_Month_select.addItems(
            ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'])
        self.this_month = strftime("%m")
        self.this_month = Functions.convert_number_month[self.this_month]
        self.Extract_Month_select.setCurrentText(self.this_month)
        self.Extract_Month_select.currentTextChanged.connect(self.MeseSelected_func)
        #self.Extract_checkbox.stateChanged.connect(self.ClickBox_func)
        self.Extract_Add_btn.setText(_translate("Library_main", "Select"))
        self.Extract_Add_btn.clicked.connect(self.Data_For_ExtractDb)
        self.MainTabs_tabWidget.setTabText(self.MainTabs_tabWidget.indexOf(self.Extract_tab), _translate("Library_main", "xlsx -> db"))




spezzone di  codice

...
###############################
########
######
    def MeseSelected_func(self, text = None):  # +++
        self.mese_in = text

    def AnnoSelected_func(self, text= None):  # +++
        self.anno_in = text

    def Data_For_ExtractDb(self, ):  # +++
            self.force = False
            if self.mese_in == None or self.anno_in == None:
                Functions.handle_error(self,message='SELEZIONE MANCANTE')
                return



per bypassare il problema ho anteposto una stringa contenente un spazio e presentando  vuoto il primo campo da selezionare
La domanda è, ovviamente: come posso utilizzare
 "self.this_month"/"self. this_year"




Offline Anakin73

  • python unicellularis
  • *
  • Post: 10
  • Punti reputazione: 0
    • Mostra profilo
Re:Valore preimpostato in ComboBox
« Risposta #1 il: Gennaio 30, 2021, 13:37 »
Ciao paparucino,
Se ho ben capito il tuo problema sta nel fatto che vorresti far apparire nel combo box, appena si avvia il programma, la data attuale.

qui ho scritto un pezzo di codice per vedere se ho capito cosa intendi.
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from datetime import datetime

class MyComboBox(QWidget):
    def __init__(self):
        super().__init__()
        self.Extract_Year_select = QComboBox(self)
        self.Extract_Year_select.setGeometry(QRect(380, 140, 80, 20))
        self.Extract_Year_select.setObjectName("Extract_Year_select")
        self.Extract_Year_select.addItems(['2017', '2018', '2019', '2020', '2021', '2022', '2023', '2024'])
        oggi = datetime.now()
        self.this_year = oggi.strftime("%Y")
        self.Extract_Year_select.setCurrentText(self.this_year)
        self.Extract_Year_select.currentTextChanged.connect(self.AnnoSelected_func)

    def AnnoSelected_func(self,anno):
        print(anno)

if __name__ == "__main__":
    valore = 0
    app = QApplication(sys.argv)
    Main = MyComboBox()
    x = int((app.desktop().screenGeometry().width()-Main.size().width())/2)
    y = int((app.desktop().screenGeometry().height()-Main.size().height())/2)
    Main.move(x,y)
    Main.show()

    sys.exit(app.exec_())

E' questo che intendevi?