PyQt5 QTableView更新按钮点击的视图



我如何得到我的QTableView更新时,一个按钮被推?利用pandas数据框架和标准设置作为表的数据源。我知道它不是(addWidget(self.view)只被调用一次),但我需要做些什么来更新它?(print(data)在代码中确认数据帧正在更新)

class QModel(QAbstractTableModel):
def __init__(self, data):
QAbstractTableModel.__init__(self)
self._data = data
def rowCount(self, parent=None):
return self._data.shape[0]
def columnCount(self, parent=None):
return self._data.shape[1]
def data(self, index, role=Qt.DisplayRole):
if index.isValid():
if role == Qt.DisplayRole:
return str(self._data.iloc[index.row(), index.column()])
return None
def headerData(self, col, orientation, role):
if orientation == Qt.Horizontal and role == Qt.DisplayRole:
return self._data.columns[col]
return None
class Tabs_Widget(QWidget):

def __init__(self):

super().__init__()

self.setWindowTitle('Adjustments')

self.df = pd.DataFrame()

self.add = QPushButton('Add Line')
self.add.clicked.connect(self.addLine)

self.viewmodel = self.tableView(self.df)

self.layout = QVBoxLayout(self)
self.layout.addWidget(self.add)
self.layout.addWidget(self.view)

self.show()

def addLine(self, items):
self.df = self.df.append([[1,2]])
#        print(self.df)
self.tableView(self.df)

def tableView(self, data):

print("data")
print(data)
model = QModel(data)
self.view = QTableView()

self.view.setModel(model)
self.view.setAlternatingRowColors(True)
self.view.setSizeAdjustPolicy(QTableView.AdjustToContents)        

if __name__ == '__main__':
app = 0
app = QApplication(sys.argv)
win = Tabs_Widget()
sys.exit(app.exec_())
class Tabs_Widget(QWidget):
def __init__(self):
super().__init__()

self.setWindowTitle('Adjustments')

self.df = pd.DataFrame()

self.model = QModel(self.df)
self.view = QTableView()

self.view.setModel(self.model)
self.view.setAlternatingRowColors(True)
self.view.setSizeAdjustPolicy(QTableView.AdjustToContents)

self.add = QPushButton('Add Line')
self.add.clicked.connect(self.addLine)

self.layout = QVBoxLayout(self)
self.layout.addWidget(self.add)
self.layout.addWidget(self.view)

self.show()

def addLine(self, items):
self.df = self.df.append([[1,2]])
self.view.setModel(QModel(self.df))

最新更新