【问题标题】:PyQt5: How to input default value if QLineEdit is empty?PyQt5:如果 QLineEdit 为空,如何输入默认值?
【发布时间】:2021-02-13 16:08:22
【问题描述】:

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

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

说明图如下:

即使我没有在 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_())

【问题讨论】:

    标签: python excel user-interface pyqt5 qlineedit


    【解决方案1】:

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

    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)', 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')
    

    【讨论】:

    • 先生,下面有一个错误。回溯(最后一次调用):文件“c:/Users/woody/OneDrive/바탕화면/Python Workspace/0.연습/practice.py”,第 33 行,在 save_to_excel 值 = self.vis_ent.text().strip () 或 '2000' AttributeError: 'bool' 对象没有属性 'vis_ent'
    • @WoodyKim 您的示例代码中还有一些其他错误。您需要将所有设置代码放入initUI。有关完整解决方案,请参阅我的更新答案。 (PS:如果您觉得这个答案有用,请点赞/接受)。
    • 先生,我已经解决了您的问题。先生非常感谢您!! :))
    猜你喜欢
    • 2017-12-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 2019-09-07
    • 2012-12-01
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多