class MainWindow(QMainWindow, Ui_MainWindow): ''' Class documentation goes here. ''' def __init__(self, parent=None): ''' Constructor @param parent reference to the parent widget @type QWidget ''' super(MainWindow, self).__init__(parent) self.setupUi(self) '''初始化pandasqt''' widget = self.pandastablewidget widget.resize(600, 500) self.model = DataFrameModel() # 設定新的模型 widget.setViewModel(self.model) self.df = pd.read_excel(r'./data/fund_data.xlsx',encoding='big5') self.df_original = self.df.copy() # 備份原始資料 self.model.setDataFrame(self.df) @pyqtSlot() def on_pushButton_clicked(self): '''初始化pandas''' self.model.setDataFrame(self.df_original) @pyqtSlot() def on_pushButton_2_clicked(self): '''儲存資料''' self.df.to_excel(r'./data/fund_data_new.xlsx')
def update(self, data): self.df = data self.labelInfo.setText("") self.model = DataFrameModel() self.widget.resize(self.widget.sizeHint()) self.widget.show() self.widget.setViewModel(self.model) self.model.setDataFrame(data)
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) widget = self.pandastablewidget widget.resize(600, 500) self.model = DataFrameModel()#设置新的模型 widget.setViewModel(self.model) self.df = pd.read_excel(r'./data/fund_data.xlsx', encoding='gdk') self.df_original = self.df.copy()#备份原始数据 self.model.setDataFrame(self.df)
def _previewFile(self): """Updates the preview widgets with new models for both tab panes. """ dataFrame = self._loadCSVDataFrame() dataFrameModel = DataFrameModel(dataFrame, filePath=self._filename) dataFrameModel.enableEditing(True) self._previewTableView.setModel(dataFrameModel) columnModel = dataFrameModel.columnDtypeModel() columnModel.changeFailed.connect(self.updateStatusBar) self._datatypeTableView.setModel(columnModel)
def show_data(self): """ 展示读取进来的数据 """ self.widget = DataTableWidget(self.ui) model = DataFrameModel() model.setDataFrame(self.DataHelper.data) self.widget.setViewModel(model) self.widget.move(30, 200) self.widget.resize(350, 350) self.widget.show()
def Updating_all_windows(self): if self.orignal_df is None: QMessageBox.information(self, '提示', '未读取数据', QMessageBox.Yes, QMessageBox.Yes) else: self.ErrorDataview_show() self.tableView_show() self.widget = self.pandastablewidget self.model = DataFrameModel() self.widget.setViewModel(self.model) self.model.setDataFrame(self.orignal_df)
class ResultWindow(QWidget): def __init__(self): super(self.__class__, self).__init__() self.setup_ui() def setup_ui(self): self.setWindowTitle("查詢結果") self.setFont(PyQt5.QtGui.QFont("Times New Roman", 11)) self.buttonCopy = QPushButton("複製查詢結果 (Ctrl+C)") self.buttonCopy.clicked.connect(self.copy) self.labelInfo = QLabel("") self.shortcut = QShortcut(PyQt5.QtGui.QKeySequence("Ctrl+C"), self) self.shortcut.activated.connect(self.copy) self.formLayout = QFormLayout() self.formLayout.addRow(self.buttonCopy, self.labelInfo) self.widget = DataTableWidget() self.widget.setButtonsVisible(False) self.widget.setMinimumSize(600, 600) self.vbox = QVBoxLayout() self.vbox.addLayout(self.formLayout) self.vbox.addWidget(self.widget) self.setLayout(self.vbox) def update(self, data): self.df = data self.labelInfo.setText("") self.model = DataFrameModel() self.widget.resize(self.widget.sizeHint()) self.widget.show() self.widget.setViewModel(self.model) self.model.setDataFrame(data) def copy(self): count = 0 indexes = self.widget.tableView.selectionModel().selectedRows() if len(indexes) > 0: rows = [index.row() for index in indexes] count = len(indexes) else: rows = [i for i in range(self.widget.tableView.model().rowCount())] count = self.widget.tableView.model().rowCount() s = '' for i in rows: r = self.df.iloc[[i]] for v in r.values[0].astype(str): s += (v + '\t') s = s[:-1] + '\n' pyperclip.copy(s[:-1]) self.labelInfo.setText(str(count) + " 筆資料已複製至剪貼簿")
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setWindowTitle("QtPandas") self.setWindowIcon(QIcon("./images/Python2.ico")) self.setupUi(self) widget = self.pandastablewidget widget.resize(600, 500) self.model = DataFrameModel() widget.setViewModel(self.model) self.df = pd.read_excel(r'./data/fund_data.xlsx', encoding='gbk') self.df_original = self.df.copy() self.model.setDataFrame(self.df)
class Ui_Mine5(object): def click1(self): self.form.close() Form1 = QtWidgets.QMainWindow() self.ui = Mine.Ui_Mine() self.ui.setupUi(Form1) Form1.show() def setupUi(self, Mine5): Mine5.setObjectName("Mine5") Mine5.resize(1259, 879) Mine5.setStyleSheet("border-image: url(:/M11.jpg);") Mine5.setWindowFlags(Qt.FramelessWindowHint) self.form = Mine5 self.centralwidget = QtWidgets.QWidget(Mine5) self.centralwidget.setObjectName("centralwidget") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(20, -10, 861, 101)) self.pushButton.setStyleSheet("border-image: url(:/M16.jpg);\n" "font: 14pt \"华文新魏\";") self.pushButton.setObjectName("pushButton") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(890, 0, 361, 81)) self.label_2.setStyleSheet("\n" "border-image: url(:/M10.jpg);") self.label_2.setObjectName("label_2") self.pandastablewidget = DataTableWidget(self.centralwidget) self.pandastablewidget.setGeometry(QtCore.QRect(-10, 90, 1251, 741)) self.pandastablewidget.setStyleSheet("border-image: url(:/M8.png);") self.pandastablewidget.setObjectName("pandastablewidget") self.model = DataFrameModel() self.pandastablewidget.setViewModel(self.model) self.model.setDataFrame(db) Mine5.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(Mine5) self.menubar.setGeometry(QtCore.QRect(0, 0, 1259, 26)) self.menubar.setObjectName("menubar") Mine5.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(Mine5) self.statusbar.setObjectName("statusbar") Mine5.setStatusBar(self.statusbar) self.retranslateUi(Mine5) self.pushButton.clicked.connect(self.click1) QtCore.QMetaObject.connectSlotsByName(Mine5) def retranslateUi(self, Mine5): _translate = QtCore.QCoreApplication.translate Mine5.setWindowTitle(_translate("Mine5", "欢迎使用喵眼!")) self.pushButton.setText(_translate("Mine5", "返回")) self.label_2.setText(_translate("Mine5", "TextLabel"))
def showdata(self): '''初始化pandasqt''' global data, data_orignal try: widget_qtpandas = self.pandastablewidget widget_qtpandas.resize(370, 250) self.model = DataFrameModel() # 设置新的模型 widget_qtpandas.setViewModel(self.model) data = pd.DataFrame(data) # self.data_orignal = self.data.copy(deep=False) #浅拷贝,旧地址的内容改变不会改变新地址的内容 self.model.setDataFrame(data) self.label_status.setText('欢迎使用本程序') # 任务栏显示信息完成 except Exception as e: self.Warning_QMessageBox(str(e))
def viewFile(self): ''' 展示文件的函数 :return: ''' if self.orignal_df.empty: QMessageBox.warning(self, '警告', '文件为空文件!', QMessageBox.Yes, QMessageBox.Yes) self.ErrorDataview_show() self.tableView_show() self.label_2.close() self.widget = self.pandastablewidget self.model = DataFrameModel() self.widget.setViewModel(self.model) self.model.setDataFrame(self.orignal_df)
def save_file(self, filepath, save_as=None, keep_orig=False, **kwargs): """ Saves a DataFrameModel to a file. :param filepath: (str) The filepath of the DataFrameModel to save. :param save_as: (str, default None) The new filepath to save as. :param keep_orig: (bool, default False) True keeps the original filepath/DataFrameModel if save_as is specified. :param kwargs: pandas.DataFrame.to_excel(**kwargs) if .xlsx pandas.DataFrame.to_csv(**kwargs) otherwise. :return: None """ df = self._models[filepath].dataFrame() kwargs['index'] = kwargs.get('index', False) if save_as is not None: to_path = save_as else: to_path = filepath ext = os.path.splitext(to_path)[1].lower() if ext == ".xlsx": kwargs.pop('sep', None) df.to_excel(to_path, **kwargs) elif ext in ['.csv', '.txt']: df.to_csv(to_path, **kwargs) else: raise NotImplementedError( "Cannot save file of type {}".format(ext)) if save_as is not None: if keep_orig is False: # Re-purpose the original model # Todo - capture the DataFrameModelManager._updates too model = self._models.pop(filepath) model._filePath = to_path else: # Create a new model. model = DataFrameModel() model.setDataFrame(df, copyDataFrame=True, filePath=to_path) self._models[to_path] = model
def __init__(self, parent=None): """ Constructor @param parent reference to the parent widget @type QWidget """ super(MainWindow, self).__init__(parent) self.setupUi(self) '''初始化pandasqt''' widget = self.pandastablewidget widget.resize(600, 500) # 如果对部件尺寸大小不满意可以在这里设置 self.model = DataFrameModel() # 设置新的模型 widget.setViewModel(self.model) self.LoadFileName = None
class Order(QWidget, Ui_offer_Form): # 订单 def __init__(self, parent=None): super(Order, self).__init__(parent) self.setupUi(self) self.offer() def offer(self): # 订单 # self.offerwidget = DataTableWidget() widget = self.offerwidget widget.resize(600, 500) # 如果对部件尺寸大小不满意可以在这里设置 self.model = DataFrameModel() # 设置新的模型 widget.setViewModel(self.model) # conn = pymysql.connect(host='localhost', port=3308,user='******',password='******',db='mrp',charset='utf8') # # 通过sqlalchemy.create_engine建立连接引擎 # engine = create_engine('mysql+pymysql://root:root@localhost:3308/mrp') # sql = 'select * from quote' # self.df = pd.read_sql(sql, con=conn)#MySQL法连接数据库,读取数据需要转换 # self.df = pd.read_sql(sql, engine)#SQLAlchemy法可以直接创建dataframe # self.df.to_sql(name='user',con=engine,if_exists='append',index=False) 写入数据库 # df.to_sql(目标表名,con=engine, schema=数据库名, index=False, index_label=False, if_exists='append', chunksize=1000) # pd.io.sql.to_sql(df,table_name,con=conn,schema='w_analysis',if_exists='append') 两个语句??? self.df = pd.read_excel(r'C:/Users/Administrator/Desktop/报价模板.xlsx', encoding='utf-8') # self.df_original = self.df.copy() # 备份原始数据 self.model.setDataFrame(self.df) # d = self.df.loc[:,'num'].sum() d = sum(self.df['单重']) print('d' + str(d)) # self.df.apply(sum) # column_sum = self.df.iloc[:,j].sum() # dtypedict = {} # for i, j in zip(self.df.columns, self.df.dtypes): # # if "object" in str(j): # # dtypedict.update({i: VARCHAR(256)}) # # if "float" in str(j): # # dtypedict.update({i: NUMBER(19,8)}) # if "int" in str(j): # dtypedict.update({i: VARCHAR(19)}) # return dtypedict # print(dtypedict) """
def showAttributesData(self, attributes_data): '''初始化指定属性显示表格信息的qtpandastablewidget(qtpandas_attributewidget)''' global pyechartsdata pyechartsdata = attributes_data self.attributes_data = attributes_data try: attributewidget_qtpandas = self.qtpandas_attributewidget self.attributesmodel = DataFrameModel() attributewidget_qtpandas.setViewModel(self.attributesmodel) self.attributesmodel.setDataFrame(self.attributes_data) #self.pyechartsthread.start() #self.browser.load(QUrl('D:/办公软件/Python源文件/数据挖掘应用/render.html')) # 本地Html需要使用绝对地址 ,且用‘/’ #self.showmatplotlib_signal.emit() #属性图标显示出来后发送视图显示的信号 except Exception as e: self.Warning_QMessageBox(str(e))
def __init__(self): super(BaiduMapCrawler_main, self).__init__() self.setupUi(self) self.setWindowTitle("百度地图数据采集工具_by_夜雨微寒") self.setWindowIcon(QtGui.QIcon(r'./resource/image/spider3.png')) self.result = [] '''初始化pandasqt''' widget = self.pandastablewidget # 设置qtpandas.DataFrameMode() self.model = DataFrameModel() widget.setViewModel(self.model) # 初始化省份 self.comboBox_prov.clear() self.comboBox_prov.addItem('请选择') for k, v in province_dict.items(): self.comboBox_prov.addItem(v, k)
def test_setDataFrame(): dataFrame = pandas.DataFrame([0], columns=['A']) model = DataFrameModel() model.setDataFrame(dataFrame) assert not model.dataFrame().empty assert model.dataFrame() is dataFrame with pytest.raises(TypeError) as excinfo: model.setDataFrame(None) assert "pandas.core.frame.DataFrame" in str(excinfo.value)
def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) # qtpandas 设置 tableWidget tableWidget = self.tableWidget self.model = DataFrameModel() tableWidget.setViewModel(self.model) self.df = None # 用于操作的数据 self.df_temp = None # 用于撤销的数据 self.df_original = None # 用于初始化的数据 # 数据导入 tab self.pushButton_openfile.clicked.connect(self.open_file) self.saveDataButton.clicked.connect(self.save_data) self.initDataButton.clicked.connect(self.init_data) self.pushButton_refresh.clicked.connect(self.data_shape) self.pushButton_refresh.clicked.connect(self.data_describe) self.plotButton.clicked.connect(self.image_plot) # 特征预处理 tab self.checkNaNButton.clicked.connect(self.check_NaN) self.okButton_nan.clicked.connect(self.deal_with_NaN) self.repealButton_nan.clicked.connect(self.repeal_action) self.okButton_nondim.clicked.connect(self.nondim_action) self.repealButton_nondim.clicked.connect(self.repeal_action) self.initButton_nondim.clicked.connect(self.init_data) # 绘图设置 tab self.radioButton_2D.toggled.connect(self.set_page_show) self.radioButton_2Dline.toggled.connect(self.set_page_show) self.radioButton_2Dscatter.toggled.connect(self.set_page_show) self.radioButton_2Dhist.toggled.connect(self.set_page_show) # self.radioButton_2Dpie.toggled.connect(self.set_page_show) self.comboBox_fitmethod.activated.connect(self.set_page_show) self.radioButton_3D.toggled.connect(self.set_page_show) self.radioButton_3Dline.toggled.connect(self.set_page_show) self.radioButton_3Dscatter.toggled.connect(self.set_page_show) self.radioButton_3Dsurface.toggled.connect(self.set_page_show) # 跟随主窗口关闭所有绘图 self.close_signal.connect(lambda: plt.close('all'))
def __init__(self, parent=None): """ Constructor @param parent reference to the parent widget @type QWidget """ super(MainWindow, self).__init__(parent) self.setupUi(self) '''初始化pandasqt''' widget = self.pandastablewidget widget.resize(600, 500) # 如果对部件尺寸大小不满意可以在这里设置 self.model = DataFrameModel() # 设置新的模型 widget.setViewModel(self.model) self.df = pd.read_excel(r'./data/fund_data.xlsx', encoding='gbk') self.df_original = self.df.copy() # 备份原始数据 self.model.setDataFrame(self.df)
class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) widget = self.pandastablewidget widget.resize(600, 500) self.model = DataFrameModel()#设置新的模型 widget.setViewModel(self.model) self.df = pd.read_excel(r'./data/fund_data.xlsx', encoding='gdk') self.df_original = self.df.copy()#备份原始数据 self.model.setDataFrame(self.df) @pyqtSlot() def on_pushButton_clicked(self): self.model.setDataFrame(self.df_original) @pyqtSlot() def on_pushButton2_clicked(self): self.df.to_excel(r'./data/fund_data_new.xlsx')
def __init__(self, parent=None): ''' Constructor @param parent reference to the parent widget @type QWidget ''' super(MainWindow, self).__init__(parent) self.setupUi(self) '''初始化pandasqt''' widget = self.pandastablewidget widget.resize(600, 500) self.model = DataFrameModel() # 設定新的模型 widget.setViewModel(self.model) self.df = pd.read_excel(r'./data/fund_data.xlsx',encoding='big5') self.df_original = self.df.copy() # 備份原始資料 self.model.setDataFrame(self.df)
def __init__(self, parent=None): super(MyMainWidget, self).__init__(parent) self.setupUi(self) self.setLayout(self.gridLayout) # 退出窗口 self.quit_btn.clicked.connect(self.quit_act) # qtpandas model = DataFrameModel() # 空模型那个用于存储和处理数据 # print(type(self.widget_2)) self.widget_2.setViewModel(model) data = {'A': [10, 11, 12], 'B': [12, 11, 10], 'C': ['a', 'b', 'c']} self.df = pandas.DataFrame(data) self.df['A'] = self.df['A'].astype(np.int8) # 委托,规定某一列的类型 model.setDataFrame(self.df) # 保存数据 self.quit_btn_7.clicked.connect(self.save_data)
class MainWindow(QMainWindow, Ui_MainWindow): """ Class documentation goes here. """ def __init__(self, parent=None): """ Constructor @param parent reference to the parent widget @type QWidget """ super(MainWindow, self).__init__(parent) self.setupUi(self) '''初始化pandasqt''' widget = self.pandastablewidget widget.resize(600, 500) # 如果对部件尺寸大小不满意可以在这里设置 self.model = DataFrameModel() # 设置新的模型 widget.setViewModel(self.model) self.df = pd.read_excel(r'./data/fund_data.xlsx',encoding='gbk') self.df_original = self.df.copy() # 备份原始数据 self.model.setDataFrame(self.df) @pyqtSlot() def on_pushButton_clicked(self): """ 初始化pandas """ self.model.setDataFrame(self.df_original) @pyqtSlot() def on_pushButton_2_clicked(self): """ 保存数据 """ self.df.to_excel(r'./data/fund_data_new.xlsx')
class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setWindowTitle("QtPandas") self.setWindowIcon(QIcon("./images/Python2.ico")) self.setupUi(self) widget = self.pandastablewidget widget.resize(600, 500) self.model = DataFrameModel() widget.setViewModel(self.model) self.df = pd.read_excel(r'./data/fund_data.xlsx', encoding='gbk') self.df_original = self.df.copy() self.model.setDataFrame(self.df) @pyqtSlot() def on_pushButton_clicked(self): self.model.setDataFrame(self.df_original) @pyqtSlot() def on_pushButton_2_clicked(self): self.df.to_excel(r'./data/fund_data_new1.xlsx')
def test_copyDataFrame(copy, operator): dataFrame = pandas.DataFrame([0], columns=['A']) model = DataFrameModel(dataFrame, copyDataFrame=copy) assert operator(id(model.dataFrame()), id(dataFrame)) model.setDataFrame(dataFrame, copyDataFrame=copy) assert operator(id(model.dataFrame()), id(dataFrame))
def setDataFrame(self, dataFrame): self.df = dataFrame dataModel = DataFrameModel() dataModel.setDataFrame(self.df) self.dataModel = dataModel self.dataListView.setModel(dataModel) self.dataTableView.setViewModel(dataModel) self.dataComboBox.setModel(dataModel) # self.dataTableView.resizeColumnsToContents() # create a simple item model for our choosing combobox columnModel = QtGui.QStandardItemModel() for column in self.df.columns: columnModel.appendRow(QtGui.QStandardItem(column)) self.chooseColumnComboBox.setModel(columnModel) self.tableViewColumnDtypes.setModel(dataModel.columnDtypeModel()) self.tableViewColumnDtypes.horizontalHeader().setDefaultSectionSize(200) self.tableViewColumnDtypes.setItemDelegateForColumn(1, DtypeComboDelegate(self.tableViewColumnDtypes)) dataModel.changingDtypeFailed.connect(self.changeColumnValue)
def setupUi(self, Mine5): Mine5.setObjectName("Mine5") Mine5.resize(1259, 879) Mine5.setStyleSheet("border-image: url(:/M11.jpg);") Mine5.setWindowFlags(Qt.FramelessWindowHint) self.form = Mine5 self.centralwidget = QtWidgets.QWidget(Mine5) self.centralwidget.setObjectName("centralwidget") self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(20, -10, 861, 101)) self.pushButton.setStyleSheet("border-image: url(:/M16.jpg);\n" "font: 14pt \"华文新魏\";") self.pushButton.setObjectName("pushButton") self.label_2 = QtWidgets.QLabel(self.centralwidget) self.label_2.setGeometry(QtCore.QRect(890, 0, 361, 81)) self.label_2.setStyleSheet("\n" "border-image: url(:/M10.jpg);") self.label_2.setObjectName("label_2") self.pandastablewidget = DataTableWidget(self.centralwidget) self.pandastablewidget.setGeometry(QtCore.QRect(-10, 90, 1251, 741)) self.pandastablewidget.setStyleSheet("border-image: url(:/M8.png);") self.pandastablewidget.setObjectName("pandastablewidget") self.model = DataFrameModel() self.pandastablewidget.setViewModel(self.model) self.model.setDataFrame(db) Mine5.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(Mine5) self.menubar.setGeometry(QtCore.QRect(0, 0, 1259, 26)) self.menubar.setObjectName("menubar") Mine5.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(Mine5) self.statusbar.setObjectName("statusbar") Mine5.setStatusBar(self.statusbar) self.retranslateUi(Mine5) self.pushButton.clicked.connect(self.click1) QtCore.QMetaObject.connectSlotsByName(Mine5)
class MainWindow(QMainWindow, Ui_MainWindow): """ Class documentation goes here. """ def __init__(self, parent=None): """ Constructor @param parent reference to the parent widget @type QWidget """ super(MainWindow, self).__init__(parent) self.setupUi(self) '''初始化pandasqt''' widget = self.pandastablewidget widget.resize(600, 500) # 如果对部件尺寸大小不满意可以在这里设置 self.model = DataFrameModel() # 设置新的模型 widget.setViewModel(self.model) self.df = pd.read_excel(r'./data/fund_data.xlsx', encoding='gbk') self.df_original = self.df.copy() # 备份原始数据 self.model.setDataFrame(self.df) @pyqtSlot() def on_pushButton_clicked(self): """ 初始化pandas """ self.model.setDataFrame(self.df_original) @pyqtSlot() def on_pushButton_2_clicked(self): """ 保存数据 """ self.df.to_excel(r'./data/fund_data_new.xlsx')
class MainWindow(QMainWindow, Ui_MainWindow): """ Class documentation goes here. """ def __init__(self, parent=None): """ Constructor @param parent reference to the parent widget @type QWidget """ super(MainWindow, self).__init__(parent) self.setupUi(self) '''初始化pandasqt''' widget = self.pandastablewidget widget.resize(600, 500) # 如果对部件尺寸大小不满意可以在这里设置 self.model = DataFrameModel() # 设置新的模型 widget.setViewModel(self.model) self.LoadFileName = None @pyqtSlot() def on_pushButton_clicked(self): """ 初始化pandas """ self.model.setDataFrame(self.dataframe_original) @pyqtSlot() def on_pushButton_2_clicked(self): """ 保存数据 """ data = ui.dataframe.values print(data)
def test_editing(self, dataFrame, qtbot): model = DataFrameModel(dataFrame) tableView = QtGui.QTableView() qtbot.addWidget(tableView) tableView.setModel(model) delegate = TextDelegate(tableView) createDelegate(numpy.dtype('O'), 0, tableView) tableView.show() index = model.index(0, 0) preedit_data = index.data() assert not model.editable model.enableEditing(True) tableView.edit(index) editor = tableView.findChildren(QtGui.QLineEdit)[0] qtbot.keyPress(editor, QtCore.Qt.Key_F) qtbot.keyPress(editor, QtCore.Qt.Key_Enter) QtGui.QApplication.processEvents() with qtbot.waitSignal(timeout=100): assert index.data(QtCore.Qt.DisplayRole) == 'f'
def accepted(self): """Successfully close the widget and return the loaded model. This method is also a `SLOT`. The dialog will be closed, when the `ok` button is pressed. If a `DataFrame` was loaded, it will be emitted by the signal `load`. """ model = self._previewTableView.model() if model is not None: df = model.dataFrame().copy() dfModel = DataFrameModel(df) self.load.emit(dfModel, self._filename) print(("Emitted model for {}".format(self._filename))) self._resetWidgets() self.accept()
def __init__(self, parent=None): """ Constructor @param parent reference to the parent widget @type QWidget """ super(MainWindow, self).__init__(parent) self.setupUi(self) '''初始化pandasqt''' widget = self.pandastablewidget widget.resize(600, 500) # 如果对部件尺寸大小不满意可以在这里设置 self.model = DataFrameModel() # 设置新的模型 widget.setViewModel(self.model) self.df = pd.read_excel(r'./data/fund_data.xlsx',encoding='gbk') self.df_original = self.df.copy() # 备份原始数据 self.model.setDataFrame(self.df)
standard_library.install_aliases() import pandas import numpy import sys from qtpandas.excepthook import excepthook # Use QtGui from the compat module to take care if correct sip version, etc. from qtpandas.compat import QtGui from qtpandas.models.DataFrameModel import DataFrameModel from qtpandas.views.DataTableView import DataTableWidget # from qtpandas.views._ui import icons_rc sys.excepthook = excepthook # 设置PyQt的异常钩子,在本例中基本没什么用 # 创建一个空的模型,该模型用于存储与处理数据 model = DataFrameModel() # 创建一个应用用于显示表格 app = QtGui.QApplication([]) widget = DataTableWidget() # 创建一个空的表格,主要用来呈现数据 widget.resize(500, 300) # 调整Widget的大小 widget.show() # 让表格绑定模型,也就是让表格呈现模型的内容 widget.setViewModel(model) # 创建测试数据 data = { 'A': [10, 11, 12], 'B': [20, 21, 22], 'C': ['Peter Pan', 'Cpt. Hook', 'Tinkerbell'] }