在qtable中打开csv文件时程序关闭
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在qtable中打开csv文件时程序关闭相关的知识,希望对你有一定的参考价值。
当我在单击程序时为CSV
文件中的按钮添加功能时,它会自动关闭。我改变了我的代码,然而,同样的问题仍然存在。
Debug不显示任何错误消息。我是qt
的初学者,如果有替代qtablewidget
或更好的解决方法,请告诉我。
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'officer.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!
import sys
import csv
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Form(QtWidgets.QWidget):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(930, 650)
self.fname = "data.csv"
self.combo_data2 = {0: ['إيهاب السيد محمود السيد'],
1: ['محمد مدحت محمد', 'محمد عبدالرؤوف متولي', 'وليد عزت عبدالمؤمن', 'هاني حسنين أحمد حسنين',
'محمود السيد سليمان'], 2: ['حازم فتحي مختار', 'أمير محمود سيد', 'أحمد عبدالجليل'],
3: ['ابراهيم مختار عبدالقوي', "أحمد عفيفي محمود عفيفي", 'محمود عبدالعزيز عبدالحميد',
'حسام جابر عبدالعزيز', 'إسلام مصطفى محمد', 'محمد عطيوة عبدالرازق'],
4: ["إسلام عبدالرحمن حسن", "محمد عبدالمنعم محمد يونس", 'محمد فتحي عبدالوهاب',
'محمود عبدالسلام', 'عاصم عادل عبدالعزيز'],
5: ["أحمد محمد عزت", "محمد رضا عبدالعظيم", "أحمد رمضان موسى", "عمر عناني عناني",
"حازم سامي ابراهيم", 'عبدالرحمن سمير ', 'أحمد محمد ابراهيم', 'محمد أحمد عايش',
'سعيد مدحت رأفت', 'أحمد محمد محمود البقري', 'وليد ابراهيم عبدالمجيد',
'محمد عبدالحميد سالم', 'حاتم محمد نجيب'], 6: ["محمود سامي عبدالغفار شعير"]}
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(190, 60, 75, 22))
self.pushButton.setObjectName("pushButton")
self.pushButton1 = QtWidgets.QPushButton(Form)
self.pushButton1.setGeometry(QtCore.QRect(50, 110, 85, 22))
self.pushButton1.setObjectName("pushButton1")
self.pushButton2 = QtWidgets.QPushButton(Form)
self.pushButton2.setGeometry(QtCore.QRect(150, 110, 85, 22))
self.pushButton2.setObjectName("pushButton2")
self.tableWidget = QtWidgets.QTableWidget(Form)
self.tableWidget.setEnabled(True)
self.tableWidget.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers) # Make table not editable
self.tableWidget.setGeometry(QtCore.QRect(25, 151, 881, 471))
self.tableWidget.setObjectName("tableWidget")
self.tableWidget.setColumnCount(4)
self.tableWidget.setRowCount(38)
self.col_headers = ['الرتبة', 'الإسم', 'رصيد سنوية', 'رصيد عارضة']
self.tableWidget.setHorizontalHeaderLabels(self.col_headers)
self.tableWidget.setLayoutDirection(QtCore.Qt.RightToLeft)
header = self.tableWidget.horizontalHeader()
header.setSectionResizeMode(0, QtWidgets.QHeaderView.Stretch)
header.setSectionResizeMode(1, QtWidgets.QHeaderView.ResizeToContents)
header.setSectionResizeMode(2, QtWidgets.QHeaderView.ResizeToContents)
self.comboBox = QtWidgets.QComboBox(Form)
self.comboBox.setGeometry(QtCore.QRect(728, 60, 121, 22))
self.comboBox.setEditable(False)
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox_2 = QtWidgets.QComboBox(Form)
self.comboBox.setLayoutDirection(QtCore.Qt.RightToLeft)
self.comboBox_2.setLayoutDirection(QtCore.Qt.RightToLeft)
self.comboBox_2.setGeometry(QtCore.QRect( 348, 60, 311, 22))
self.comboBox_2.setEditable(False)
self.comboBox_2.setCurrentText("")
self.comboBox_2.setObjectName("comboBox_2")
self.tableWidget.raise_()
self.pushButton.raise_()
self.comboBox.raise_()
self.comboBox_2.raise_()
self.set_combo()
self.comboBox.currentIndexChanged.connect(self.set_combo)
self.pushButton.clicked.connect(self.open_csv)
self.retranslateUi(Form)
self.comboBox.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(Form)
def open_csv(self):
with open(self.fname , 'r') as record :
for row_data in csv.reader(record):
row = self.tableWidget.rowCount()
self.tableWidget.insertRow(row)
for col , data in enumerate(row_data):
item = QtGui.QTextTableCellFormat(data)
self.tableWidget.setItem( row , col, item)
def search(self):
print 'search'
def set_combo(self):
self.comboBox_2.clear()
x = self.comboBox.currentIndex()
self.comboBox_2.addItems(self.combo_data2[x])
print x
print type(x)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "بيانات الضباط"))
self.pushButton.setText(_translate("Form", "بحث"))
self.pushButton1.setText(_translate("Form", "خصم عارضة"))
self.pushButton2.setText(_translate("Form", "خصم سنوية"))
self.comboBox.setToolTip(_translate("Form", "<html><head/><body><p>الرتبة</p></body></html>"))
self.comboBox.setCurrentText(_translate("Form", "الرتبة"))
self.comboBox_2.setCurrentText(_translate("Form", "الإسم"))
self.comboBox.setItemText(0, _translate("Form", "عميد"))
self.comboBox.setItemText(1, _translate("Form", "عقيد"))
self.comboBox.setItemText(2, _translate("Form", "مقدم"))
self.comboBox.setItemText(3, _translate("Form", "رائد"))
self.comboBox.setItemText(4, _translate("Form", "نقيب"))
self.comboBox.setItemText(5, _translate("Form", "ملازم أول"))
self.comboBox.setItemText(6, _translate("Form", "ملازم"))
self.comboBox_2.setToolTip(_translate("Form", "<html><head/><body><p>الإسم</p></body></html>"))
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
答案
我不明白为什么你使用QTextTableCellFormat
,QTableWidget
期待一个QTableWidgetItem
:
def open_csv(self):
self.tableWidget.setRowCount(0)
with open(self.fname , 'r') as record :
for row_data in csv.reader(record):
row = self.tableWidget.rowCount()
self.tableWidget.insertRow(row)
for col , data in enumerate(row_data):
item = QtWidgets.QTableWidgetItem(data)
self.tableWidget.setItem( row , col, item)
以上是关于在qtable中打开csv文件时程序关闭的主要内容,如果未能解决你的问题,请参考以下文章
在应用关闭时单击 Firebase 通知后打开特定的活动/片段
对关闭的 csv 文件 ValueError 的操作,Python 代码