导入. csv数据以填充QTableWidget



我正在构建一个GUI,我需要从几个csv文件显示到屏幕上的数据。我试过了,但想不出解决办法。我对编程和python有点陌生。我将接受任何我能得到的建议。

你会使用CSV模块吗?例如:

def loadCsvFile(self, test.csv):
with open(test.csv, "r") as stream:
for row in csv.reader(stream):

Bellow是我的UI文件的一个片段,这是巨大的。但是我想用CSV内容填充名为Xerox_work_centre_db的QTableWidget。我想知道我如何才能做到这一点?

self.verticalLayout_13.addWidget(self.Monitor_header, 0, Qt.AlignTop)
self.Monitor_main_content = QFrame(self.Monitor)
self.Monitor_main_content.setObjectName(u"Monitor_main_content")
sizePolicy.setHeightForWidth(self.Monitor_main_content.sizePolicy().hasHeightForWidth())
self.Monitor_main_content.setSizePolicy(sizePolicy)
self.Monitor_main_content.setFrameShape(QFrame.StyledPanel)
self.Monitor_main_content.setFrameShadow(QFrame.Raised)
self.Xerox_workcentre_db = QTableWidget(self.Monitor_main_content)
self.Xerox_workcentre_db.setObjectName(u"Xerox_workcentre_db")
self.Xerox_workcentre_db.setGeometry(QRect(0, 1, 801, 611))
self.verticalLayout_13.addWidget(self.Monitor_main_content)
self.stackedWidget.addWidget(self.Monitor)
self.Alerts = QWidget()
self.Alerts.setObjectName(u"Alerts")
self.stackedWidget.addWidget(self.Alerts)
self.Order = QWidget()
self.Order.setObjectName(u"Order")
self.stackedWidget.addWidget(self.Order)
self.verticalLayout_12.addWidget(self.stackedWidget)

self.verticalLayout.addWidget(self.main_body_content)
self.footer = QFrame(self.main_body)
self.footer.setObjectName(u"footer")
self.footer.setStyleSheet(u"QFrame{n"

更新后的代码,现在返回以下错误:

文件"C:TempGitHubCSV_to_UImain.py",第176行,在loadCsvself.model.appendRow(物品)AttributeError: 'MainWindow'对象没有属性'model'

从ui_interface.py

self.verticalLayout_13.addWidget(self.Monitor_header, 0, Qt.AlignTop)
self.Monitor_main_content = QFrame(self.Monitor)
self.Monitor_main_content.setObjectName(u"Monitor_main_content")
sizePolicy.setHeightForWidth(self.Monitor_main_content.sizePolicy().hasHeightForWidth())
self.Monitor_main_content.setSizePolicy(sizePolicy)
self.Monitor_main_content.setFrameShape(QFrame.StyledPanel)
self.Monitor_main_content.setFrameShadow(QFrame.Raised)
self.verticalLayout_18 = QVBoxLayout(self.Monitor_main_content)
self.verticalLayout_18.setSpacing(0)
self.verticalLayout_18.setObjectName(u"verticalLayout_18")
self.verticalLayout_18.setContentsMargins(0, 0, 0, 0)
#######################################
### CSV CONTENT
self.model = QStandardItemModel(MainWindow)
self.Xerox_workcentre_db = QTableView(self.Monitor_main_content)
self.Xerox_workcentre_db.setObjectName(u"Xerox_workcentre_db")
self.Xerox_workcentre_db.setModel(self.model)
self.Xerox_workcentre_db.horizontalHeader().setStretchLastSection(True)
self.verticalLayout_18.addWidget(self.Xerox_workcentre_db)
#######################################

从main.py

## MAIN WINDOW CLASS
########################################################################
class MainWindow(QMainWindow):
def __init__(self, parent=None):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground)
self.shadow = QGraphicsDropShadowEffect(self)
self.shadow.setBlurRadius(50)
self.shadow.setXOffset(0)
self.shadow.setYOffset(0)
self.shadow.setColor(QColor(0, 92, 157, 550))
self.ui.centralwidget.setGraphicsEffect(self.shadow)
self.setWindowIcon(QIcon(""))
# Set window tittle
self.setWindowTitle("Printer Monitoring v1.0")
QSizeGrip(self.ui.size_grip)
#######################################################################
## Button for loadCsv
self.ui.Xerox_workcentre_button.clicked.connect(self.loadCsv)

#######################################################################
self.ui.minimize_window_button.clicked.connect(lambda: self.showMinimized())

self.ui.close_window_button.clicked.connect(lambda: self.close())
self.ui.exit_button.clicked.connect(lambda: self.close())

self.ui.restore_window_button.clicked.connect(lambda: self.restore_or_maximize_window())

def moveWindow(e):
if self.isMaximized() == False:  # Not maximized
if e.buttons() == Qt.LeftButton:             
self.move(self.pos() + e.globalPos() - self.clickPosition)
self.clickPosition = e.globalPos()
e.accept()

self.ui.header_frame.mouseMoveEvent = moveWindow     
self.ui.open_close_side_bar_btn.clicked.connect(lambda: self.slideLeftMenu())
self.show()

def slideLeftMenu(self):
# Get current left menu width
width = self.ui.slide_menu_container.width()
# If minimized
if width == 0:
# Expand menu
newWidth = 200
self.ui.open_close_side_bar_btn.setIcon(QIcon(u":/icons/icons/chevron-left-solid-white.svg"))
# If maximized
else:
# Restore menu
newWidth = 0
self.ui.open_close_side_bar_btn.setIcon(QIcon(u":/icons/icons/bars-solid-white.svg"))
# Animate the transition
self.animation = QPropertyAnimation(self.ui.slide_menu_container, b"minimumWidth")  # Animate minimumWidth
self.animation.setDuration(350)
self.animation.setStartValue(width)  # Start value is the current menu width
self.animation.setEndValue(newWidth)  # end value is the new menu width
self.animation.setEasingCurve(QEasingCurve.InOutQuart)
self.animation.start()
def mousePressEvent(self, event):
self.clickPosition = event.globalPos()
def restore_or_maximize_window(self):
# If window is maximized
if self.isMaximized():
self.showNormal()
# Change Icon
self.ui.restore_window_button.setIcon(QIcon(u":/icons/icons/window-maximize-regular-white.svg"))
else:
self.showMaximized()
self.ui.restore_window_button.setIcon(QIcon(u":/icons/icons/window-restore-solid-white.svg"))
#######################################################################
# CALL XEROX CSV FUNCTION
def loadCsv(self):
fileName= 'Xerox_workcentre_test.csv'
with open(fileName, "r") as fileInput:
for row in csv.reader(fileInput):
items = [
QtGui.QStandardItem(field)
for field in row
]
self.model.appendRow(items)

因为我有函数loadCsv在main.py和ui_interface.py的其余部分。我叫自我。模型是错误的。我只是简单地初始化了main.py中的所有内容。

def loadCsv(self):
fileName= 'Xerox_workcentre_test.csv'
with open(fileName, "r") as fileInput:
for row in csv.reader(fileInput):
items = [
QtGui.QStandardItem(field)
for field in row
]
self.ui.model.appendRow(items)

最新更新