Python PyQt5 TableView杀死内核
因此,我目前只从ZeroMQ消息传递系统获取有限的数据,将其全部附加到数据帧,然后将数据帧转换为熊猫模型,并使用从堆栈上的某个人那里获取的代码。然后通过PyQt5表视图运行该模型 每次运行tableview代码时,在将数据帧转换为tableview的模型之后,内核就消失了。我试图至少处理一个异常,但它甚至不会引发超级一般的运行时错误。它每次都会死去 出于测试目的,im使用CSV和数据,试图将其纳入可行的模型。您可以使用您端上的任何csv或数据来测试这一点,因为没有硬编码格式Python PyQt5 TableView杀死内核,python,python-3.x,pyqt5,qtableview,qabstracttablemodel,Python,Python 3.x,Pyqt5,Qtableview,Qabstracttablemodel,因此,我目前只从ZeroMQ消息传递系统获取有限的数据,将其全部附加到数据帧,然后将数据帧转换为熊猫模型,并使用从堆栈上的某个人那里获取的代码。然后通过PyQt5表视图运行该模型 每次运行tableview代码时,在将数据帧转换为tableview的模型之后,内核就消失了。我试图至少处理一个异常,但它甚至不会引发超级一般的运行时错误。它每次都会死去 出于测试目的,im使用CSV和数据,试图将其纳入可行的模型。您可以使用您端上的任何csv或数据来测试这一点,因为没有硬编码格式 from PyQt5
from PyQt5 import QtCore, QtGui, QtWidgets
import pandas as pd
class PandasModel(QtCore.QAbstractTableModel):
def __init__(self, df = pd.DataFrame(), parent=None):
QtCore.QAbstractTableModel.__init__(self, parent=parent)
self._df = df
def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
if role != QtCore.Qt.DisplayRole:
return QtCore.QVariant()
if orientation == QtCore.Qt.Horizontal:
try:
return self._df.columns.tolist()[section]
except (IndexError, ):
return QtCore.QVariant()
elif orientation == QtCore.Qt.Vertical:
try:
# return self.df.index.tolist()
return self._df.index.tolist()[section]
except (IndexError, ):
return QtCore.QVariant()
def data(self, index, role=QtCore.Qt.DisplayRole):
if role != QtCore.Qt.DisplayRole:
return QtCore.QVariant()
if not index.isValid():
return QtCore.QVariant()
return QtCore.QVariant(str(self._df.ix[index.row(), index.column()]))
def setData(self, index, value, role):
row = self._df.index[index.row()]
col = self._df.columns[index.column()]
if hasattr(value, 'toPyObject'):
# PyQt4 gets a QVariant
value = value.toPyObject()
else:
# PySide gets an unicode
dtype = self._df[col].dtype
if dtype != object:
value = None if value == '' else dtype.type(value)
self._df.set_value(row, col, value)
return True
def rowCount(self, parent=QtCore.QModelIndex()):
return len(self._df.index)
def columnCount(self, parent=QtCore.QModelIndex()):
return len(self._df.columns)
def sort(self, column, order):
colname = self._df.columns.tolist()[column]
self.layoutAboutToBeChanged.emit()
self._df.sort_values(colname, ascending= order == QtCore.Qt.AscendingOrder, inplace=True)
self._df.reset_index(inplace=True, drop=True)
self.layoutChanged.emit()
def createview(title, model):
try:
view = QtWidgets.QTableView()
view.setWindowview
except:
raise RuntimeError("I know python!")
if __name__=="__main__":
df=pd.read_csv("C:\Excel Sheets\Test_CSV_6-18-18.csv")
model = PandasModel(df)
createview("Model", model)
可能重复使用:
def createview(title,model):import sys app=QtWidgets.QApplication(sys.argv)view=QtWidgets.QTableView()view.setWindowTitle(title)view.setModel(model)view.show()sys.exit(app.exec_u2;())
。你太棒了。谢谢。我建议您在继续之前阅读PyQt教程,您的问题表明您对PyQt一无所知。您部分正确。我不知道为什么我错过了整个view.show(),但是我不知道sys.exit(app.exe)。我要跳上那个教程