问题描述
我已经将我的 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_())
解决方法
您应该始终将小部件添加为属性,以便您可以通过其他方法访问它们:
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')