PyQt5:如果QLineEdit为空,如何输入默认值?

PyQt5: How to input default value if QLineEdit is empty?

我已经将我的 PyQt5 Gui 与 Excel 相关联。

我想通过 PyQt5 Gui 程序将“2000”输入 Excel,即使我没有输入任何内容。

说明图如下:

即使我没有在 PyQt5 Gui 中输入任何内容,

'2000' 应输入 Excel。

但是,关键是如果在 PyQt5 Gui 中输入任何内容,它应该像在 PyQt5 上写的那样写在 Excel 中。

我做的代码如下:

class Ship_Use_Tug_Input_Program(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        visbl = QLabel('Visibility(m)', self)
        visbl.move(60, 450)
        vis_ent = QLineEdit(self)
        vis_ent.move(180, 445)

        file = pathlib.Path('C:/Users/woody/OneDrive/Desktop/Python Workspace/Ship_Use_Tug_Input_Program.xlsx')
        if file.exists():
            pass
        else:
            file=Workbook()
            sheet = file.active

        file.save('C:/Users/woody/OneDrive/Desktop/Python Workspace/Ship_Use_Tug_Input_Program.xlsx')

    def save_to_excel(self):
        file = openpyxl.load_workbook('C:/Users/woody/OneDrive/Desktop/Python Workspace/Ship_Use_Tug_Input_Program.xlsx')

        sheet = file.active
        sheet.cell(column=10, row=sheet.max_row, value=vis_ent.text())

        file.save('C:/Users/woody/OneDrive/Desktop/Python Workspace/Ship_Use_Tug_Input_Program.xlsx')

    btn_save = QPushButton('S a v e', self)
    btn_save.clicked.connect(save_to_excel)
    btn_save.move(400,510)

    self.setWindowTitle('Ship use tug input program')
    self.setFixedSize(945, 570)
    self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Ship_Use_Tug_Input_Program()
    sys.exit(app.exec_())

您应该始终将小部件添加为属性,以便您可以通过其他方法访问它们:

class Ship_Use_Tug_Input_Program(QWidget):
    ...    
    def initUI(self):
        self.visbl = QLabel('Visibility(m)', self)
        self.visbl.move(60, 450)
        self.vis_ent = QLineEdit(self)
        self.vis_ent.move(180, 445)

现在可以获取输入文字了:

    def save_to_excel(self):
        ...    
        sheet = file.active
        value = self.vis_ent.text().strip() or '2000'
        sheet.cell(column=10, row=sheet.max_row, value=value)
        ...

如果 vis_ent 为空或只有空格,将使用默认值。


更新:

你的整个 class 应该是这样的:

class Ship_Use_Tug_Input_Program(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.visbl = QLabel('Visibility(m)', self)
        self.visbl.move(60, 450)
        self.vis_ent = QLineEdit(self)
        self.vis_ent.move(180, 445)

        self.btn_save = QPushButton('S a v e', self)
        self.btn_save.clicked.connect(self.save_to_excel)
        self.btn_save.move(400, 510)

        self.setWindowTitle('Ship use tug input program')
        self.setFixedSize(945, 570)
        self.show()

        file = pathlib.Path('C:/Users/woody/OneDrive/Desktop/Python Workspace/Ship_Use_Tug_Input_Program.xlsx')
        if file.exists():
            pass
        else:
            file=Workbook()
            sheet = file.active

        file.save('C:/Users/woody/OneDrive/Desktop/Python Workspace/Ship_Use_Tug_Input_Program.xlsx')

    def save_to_excel(self):
        file = openpyxl.load_workbook('C:/Users/woody/OneDrive/Desktop/Python Workspace/Ship_Use_Tug_Input_Program.xlsx')
        sheet = file.active
        value = self.vis_ent.text().strip() or '2000'
        sheet.cell(column=10, row=sheet.max_row, value=value)

        file.save('C:/Users/woody/OneDrive/Desktop/Python Workspace/Ship_Use_Tug_Input_Program.xlsx')