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

问题描述

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

我想通过 PyQt5 Gui 程序在 Excel 中输入“2000”,即使我没有在上面输入任何内容

说明照片如下:

enter image description here

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

enter image description here

'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 Ship_Use_Tug_Input_Program(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.visbl = QLabel('Visibility(m)',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,value=value)

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