python - pyqt 如何保存窗口内容,再次打开时显示之前输入的内容
问题描述
pyqt小白,做了一个小窗口,点击按钮打开含qtablewidget的窗口,在窗口里可以输入内容。问题出在再次打开时又打开了一个新的窗口,里面的内容清空了。想问问大家如何保存上一次输入的内容,再次打开时显示的是之前输入的内容。谢谢大家啦!代码如下:这是主程序代码:
from PyQt4 import QtCore, QtGuifrom ui_qtable import Ui_Tabletry: _fromUtf8 = QtCore.QString.fromUtf8except AttributeError: def _fromUtf8(s):return stry: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig):return QtGui.QApplication.translate(context, text, disambig, _encoding)except AttributeError: def _translate(context, text, disambig):return QtGui.QApplication.translate(context, text, disambig)class Ui_MainWindow(object): def setupUi(self, MainWindow):MainWindow.setObjectName(_fromUtf8('MainWindow'))MainWindow.resize(344, 244)self.centralwidget = QtGui.QWidget(MainWindow)self.centralwidget.setObjectName(_fromUtf8('centralwidget'))self.pushButton = QtGui.QPushButton(self.centralwidget)self.pushButton.setGeometry(QtCore.QRect(110, 80, 121, 61))font = QtGui.QFont()font.setPointSize(17)self.pushButton.setFont(font)self.pushButton.setObjectName(_fromUtf8('pushButton'))MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtGui.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 344, 23))self.menubar.setObjectName(_fromUtf8('menubar'))MainWindow.setMenuBar(self.menubar)self.statusbar = QtGui.QStatusBar(MainWindow)self.statusbar.setObjectName(_fromUtf8('statusbar'))MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)self.pushButton.clicked.connect(self.PushFunc) def retranslateUi(self, MainWindow):MainWindow.setWindowTitle(_translate('MainWindow', 'MainWindow', None))self.pushButton.setText(_translate('MainWindow', 'Push', None))def PushFunc(self):self.another = Ui_Table()self.table = QtGui.QMainWindow()self.another.setupUi(self.table)self.table.show() if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) Question = QtGui.QMainWindow() ui = Ui_MainWindow() ui.setupUi(Question) Question.show() sys.exit(app.exec_())
这是Qtablewidget窗口:
from PyQt4 import QtCore, QtGuitry: _fromUtf8 = QtCore.QString.fromUtf8except AttributeError: def _fromUtf8(s):return stry: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig):return QtGui.QApplication.translate(context, text, disambig, _encoding)except AttributeError: def _translate(context, text, disambig):return QtGui.QApplication.translate(context, text, disambig)class Ui_Table(QtGui.QWidget): def setupUi(self, MainWindow):MainWindow.setObjectName(_fromUtf8('MainWindow'))MainWindow.resize(422, 196)self.centralwidget = QtGui.QWidget(MainWindow)self.centralwidget.setObjectName(_fromUtf8('centralwidget'))self.tableWidget = QtGui.QTableWidget(self.centralwidget)self.tableWidget.setGeometry(QtCore.QRect(0, 0, 421, 171))self.tableWidget.setObjectName(_fromUtf8('tableWidget'))self.tableWidget.setColumnCount(4)self.tableWidget.setRowCount(4)item = QtGui.QTableWidgetItem()self.tableWidget.setVerticalHeaderItem(0, item)item = QtGui.QTableWidgetItem()self.tableWidget.setVerticalHeaderItem(1, item)item = QtGui.QTableWidgetItem()self.tableWidget.setVerticalHeaderItem(2, item)item = QtGui.QTableWidgetItem()self.tableWidget.setVerticalHeaderItem(3, item)item = QtGui.QTableWidgetItem()self.tableWidget.setHorizontalHeaderItem(0, item)item = QtGui.QTableWidgetItem()self.tableWidget.setHorizontalHeaderItem(1, item)item = QtGui.QTableWidgetItem()self.tableWidget.setHorizontalHeaderItem(2, item)item = QtGui.QTableWidgetItem()self.tableWidget.setHorizontalHeaderItem(3, item)MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtGui.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 422, 23))self.menubar.setObjectName(_fromUtf8('menubar'))MainWindow.setMenuBar(self.menubar)self.statusbar = QtGui.QStatusBar(MainWindow)self.statusbar.setObjectName(_fromUtf8('statusbar'))MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow):MainWindow.setWindowTitle(_translate('MainWindow', 'MainWindow', None))item = self.tableWidget.verticalHeaderItem(0)item.setText(_translate('MainWindow', '1', None))item = self.tableWidget.verticalHeaderItem(1)item.setText(_translate('MainWindow', '2', None))item = self.tableWidget.verticalHeaderItem(2)item.setText(_translate('MainWindow', '3', None))item = self.tableWidget.verticalHeaderItem(3)item.setText(_translate('MainWindow', '4', None))item = self.tableWidget.horizontalHeaderItem(0)item.setText(_translate('MainWindow', '新建列', None))item = self.tableWidget.horizontalHeaderItem(1)item.setText(_translate('MainWindow', '新建列', None))item = self.tableWidget.horizontalHeaderItem(2)item.setText(_translate('MainWindow', '新建列', None))item = self.tableWidget.horizontalHeaderItem(3)item.setText(_translate('MainWindow', '新建列', None))
问题解答
回答1:主程序代码,定位到第39行到53行的部分,按如下注释修改:
self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)self.pushButton.clicked.connect(self.PushFunc)###### 49行处剪切的三行,放到这里 ######self.another = Ui_Table()self.table = QtGui.QMainWindow()self.another.setupUi(self.table) def retranslateUi(self, MainWindow):MainWindow.setWindowTitle(_translate('MainWindow', 'MainWindow', None))self.pushButton.setText(_translate('MainWindow', 'Push', None))def PushFunc(self):###### 剪切这三行 #######self.another = Ui_Table()#self.table = QtGui.QMainWindow()#self.another.setupUi(self.table)self.table.show()