保存时验证用户输入(PyQt中的多个QLineEdit字段)

时间:2019-05-16 19:05:12

标签: python python-3.x pyqt pyqt5

我正在优化我编写的用于在计算机维修中心管理维修的程序,我正在寻找方法来优化代码并使代码更紧凑。我想知道是否有一种较短的方法来验证多个QLineEdit字段而没有十亿个ifelse语句?

这是应该如何工作的:

  • 第1步:填写客户详细信息。
  • 第2步:检查字段是否为空。
  • 第3步:如果它们为空,则将标签设置为红色并显示错误消息。 (其他标签=黑色)
  • 第4步:如果所有QLineEdit字段都已填写->保存修复

有更简单的方法吗?这是我现在完成的方式:

def new_repair_validate_fields():
    ### LOGGING ###
    logging.debug(str(datetime.datetime.now().replace(microsecond=0)) + ' ' + sys._getframe().f_code.co_name)

    ## DEFINE VARIABLE ###
    valid = True

    ### NAAM ###
    if ui.nieuwe_herstelling_tab_naam_textfield.text():
        ui.nieuwe_herstelling_tab_naam_label.setStyleSheet('color: black')
    else:
        ui.nieuwe_herstelling_tab_naam_label.setStyleSheet('color: red')
        valid = False

    ### STRAAT EN NUMMER ###
    if ui.nieuwe_herstelling_tab_straatennummer_textfield.text():
        ui.nieuwe_herstelling_tab_straatennummer_label.setStyleSheet('color: black')
    else:
        ui.nieuwe_herstelling_tab_straatennummer_label.setStyleSheet('color: red')
        valid = False

    ### GEMEENTE ###
    if ui.nieuwe_herstelling_tab_gemeente_textfield.text():
        ui.nieuwe_herstelling_tab_gemeente_label.setStyleSheet('color: black')
    else:
        ui.nieuwe_herstelling_tab_gemeente_label.setStyleSheet('color: red')
        valid = False

    ### POSTCODE ### 
    if ui.nieuwe_herstelling_tab_postcode_textfield.text():
        ui.nieuwe_herstelling_tab_postcode_label.setStyleSheet('color: black')
    else:
        ui.nieuwe_herstelling_tab_postcode_label.setStyleSheet('color: red')
        valid = False

    ### GSM AND TELEFOON ###
    if ui.nieuwe_herstelling_tab_gsm_textfield.text() != '/..' or ui.nieuwe_herstelling_tab_telefoon_textfield.text() != '/..':
        ui.nieuwe_herstelling_tab_gsm_label.setStyleSheet('color: black')
        ui.nieuwe_herstelling_tab_telefoon_label.setStyleSheet('color: black')
    else:
        ui.nieuwe_herstelling_tab_gsm_label.setStyleSheet('color: red')
        ui.nieuwe_herstelling_tab_telefoon_label.setStyleSheet('color: red')
        valid = False

    ### TYPE ### 
    if ui.nieuwe_herstelling_tab_type_combobox.currentText() != 'Selecteer': 
        ui.nieuwe_herstelling_tab_type_combobox.setStyleSheet('color: black')
    else: 
        ui.nieuwe_herstelling_tab_type_combobox.setStyleSheet('color: red')
        valid = False 

    ### PROBLEEM TEXT ###
    if ui.nieuwe_herstelling_tab_probleemomschrijving_textfield.toPlainText(): 
        ui.nieuwe_herstelling_tab_probleemomschrijving_label.setStyleSheet('color: black')
    else: 
        ui.nieuwe_herstelling_tab_probleemomschrijving_label.setStyleSheet('color: red')
        valid = False

    ### BTW ###
    if validate_btwnummer(ui.nieuwe_herstelling_tab_btw_textfield.text()): 
        ui.nieuwe_herstelling_tab_btw_label.setStyleSheet('color: black')
    else:
        ui.nieuwe_herstelling_tab_btw_label.setStyleSheet('color: red')
        valid = False

    if valid:
        return True
    else:
        return False

还可以摆脱valid变量吗?

0 个答案:

没有答案