Я работал над проектом и удалил его по ошибке. поэтому, когда я переписывал его, я обнаружил проблему.
У меня есть этот QDialog, который показывает представление каталога с помощью (QTreeView), и когда я пытаюсь запустить его из QMainWindow (Parent Class), он завершается ошибкой.
так что это код, который запомнил:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'Dialog.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!
import pandas as pd
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import (QFileSystemModel, QDialog)
class Ui_Dialog(QDialog):
def __init__(self, tableWidget, statusbar):
super(Ui_Dialog, self).__init__()
self.setupUi(self)
self.qtRectangle = self.frameGeometry()
self.centerPoint = QtWidgets.QDesktopWidget().availableGeometry().center()
self.qtRectangle.moveCenter(self.centerPoint)
self.move(self.qtRectangle.topLeft())
self.tableWidget = tableWidget
self.statusbar = statusbar
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(500 , 500)
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(Dialog)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.treeView = QtWidgets.QTreeView(Dialog)
self.model = QFileSystemModel()
self.model.setRootPath("")
self.treeView.setModel(self.model)
self.treeView.setObjectName("treeView")
self.horizontalLayout_2.addWidget(self.treeView)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
self.treeView.doubleClicked.connect(self.import_data)
@QtCore.pyqtSlot("QModelIndex", "QModelIndex")
def import_data(self, signal):
filePath = self.model.filePath(signal)
df = pd.read_csv(filePath)
self.tableWidget.setColumnCount(len(df.columns))
self.tableWidget.setRowCount(len(df.index))
for index in range(len(df.index)):
for col in range(len(df.columns)):
self.tableWidget.setHorizontalHeaderLabels(df.columns)
self.tableWidget.setItem(
index,
col,
QtWidgets.QTableWidgetItem(df.iat[index, col]))
self.tableWidget.resizeRowsToContents()
self.tableWidget.resizeColumnsToContents()
self.tableWidget.setSortingEnabled(True)
self.statusbar.showMessage("Data uploaded", 1200)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
Когда я запускаю его, он вызывает ошибку TypeError:
PS C:\Users\pc\Desktop\DV_GUI\py files> & python
"c:/Users/pc/Desktop/DV_GUI/py files/MainWindow.py"
Traceback (most recent call last):
File "c:/Users/pc/Desktop/DV_GUI/py files/MainWindow.py", line 127, in show_dir
sys_file = Ui_Dialog(self.tableWidget, self.statusbar)
File "c:\Users\pc\Desktop\DV_GUI\py files\Dialog.py", line 18, in __init__
self.setupUi(self)
File "c:\Users\pc\Desktop\DV_GUI\py files\Dialog.py", line 42, in setupUi
self.treeView.doubleClicked.connect(self.import_data)
TypeError: decorated slot has no signature compatible with doubleClicked(QModelIndex)
вот код, который запускает QDialog:
self.actionOpen.triggered.connect(self.show_dir)
def show_dir(self):
sys_file = Ui_Dialog(self.tableWidget, self.statusbar)
sys_file.exec_()
Я помню код, который я написал, но кажется, что-то выскользнуло из моего разума.