[英]I want to add two lineEdit info's to csv in a certain column in PyQt
我想将singerLine和titleSong中的某些信息添加到csv中的某个列,我的数据库看起来像这个csv img
我想在单击添加到歌曲按钮时在第3列(歌曲)和第4列(歌手)中添加这些数据。这是我的部分代码(我知道它不对,加上我对pyqt的新内容):
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QMessageBox
import sys
import csv
class QuitMessage(QtWidgets.QMessageBox):
def __init__(self):
QtWidgets.QMessageBox.__init__(self)
self.setText("Really want to quit?")
self.addButton(self.No)
self.addButton(self.Yes)
class musicAdminUI(object):
def setupUi(self, musicAdmin):
musicAdmin.setObjectName("musicAdmin")
musicAdmin.resize(734, 601)
musicAdmin.setMinimumSize(QtCore.QSize(734, 601))
musicAdmin.setMaximumSize(QtCore.QSize(734, 601))
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("musicIcon.gif"), QtGui.QIcon.Normal,
QtGui.QIcon.Off)
musicAdmin.setWindowIcon(icon)
self.exitButton = QtWidgets.QPushButton(musicAdmin)
self.exitButton.setGeometry(QtCore.QRect(650, 565, 75, 23))
self.exitButton.setObjectName("exitButton")
self.titleSong = QtWidgets.QLineEdit(musicAdmin)
self.titleSong.setGeometry(QtCore.QRect(460, 240, 181, 20))
self.titleSong.setObjectName("titleSong")
self.singerLine = QtWidgets.QLineEdit(musicAdmin)
self.singerLine.setGeometry(QtCore.QRect(460, 270, 181, 20))
self.singerLine.setObjectName("singerLine")
self.singerLabel = QtWidgets.QLabel(musicAdmin)
self.singerLabel.setGeometry(QtCore.QRect(370, 270, 47, 13))
self.singerLabel.setObjectName("singerLabel")
self.titleLabel = QtWidgets.QLabel(musicAdmin)
self.titleLabel.setGeometry(QtCore.QRect(370, 240, 47, 13))
self.titleLabel.setObjectName("titleLabel")
self.availableSongs = QtWidgets.QPushButton(musicAdmin)
self.availableSongs.setGeometry(QtCore.QRect(390, 320, 261, 51))
self.availableSongs.setObjectName("availableSongs")
self.warningLabel = QtWidgets.QLabel(musicAdmin)
self.warningLabel.setGeometry(QtCore.QRect(410, 210, 261, 20))
self.warningLabel.setText("")
self.warningLabel.setObjectName("warningLabel")
self.exitButton.clicked.connect(self.CloseThis)
self.availableSongs.clicked.connect(self.addSong)
self.retranslateUi(musicAdmin)
QtCore.QMetaObject.connectSlotsByName(musicAdmin)
def retranslateUi(self, musicAdmin):
_translate = QtCore.QCoreApplication.translate
musicAdmin.setWindowTitle(_translate("musicAdmin", "Music Library"))
self.singerLabel.setText(_translate("musicAdmin", "Singer:"))
self.titleLabel.setText(_translate("musicAdmin", "Title:"))
self.exitButton.setText(_translate("AdminUI", "Exit"))
self.availableSongs.setText(_translate("musicAdmin", "Add Song"))
def addSong(self):
warn = QMessageBox()
voicer = self.singerLine.text()
title = self.titleSong.text()
temp = open("musics.csv", "a")
tempRead = csv.reader(temp)
song = voicer + ',' + title
songs = voicer + title
if songs != '': # if song has string
if voicer != '' or title != '':
temp.write(song + '\n')
self.warningLabel.setText("Song is added")
else:
warn.setWindowTitle("System")
warn.setText("Song Details are required")
warn.setIcon(QtWidgets.QMessageBox.Warning)
warn.exec_()
else:
warn.setWindowTitle("System")
warn.setText("Song Details are required")
warn.setIcon(QtWidgets.QMessageBox.Warning)
warn.exec_()
def CloseThis(self, event):
reply = QuitMessage().exec_()
if reply == QtWidgets.QMessageBox.Yes:
self.musicAdmin.close()
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
musicAdmin = QtWidgets.QDialog()
ui = musicAdminUI()
ui.setupUi(musicAdmin)
musicAdmin.show()
sys.exit(app.exec_())
要添加新行,我们必须使用接收列表的writerow,根据您的要求,应该只填充第3列和第4列中的数据。为此,我们通过csv创建预定义大小的列表并填写数据。
def addSong(self):
warn = QMessageBox()
voicer = self.singerLine.text()
title = self.titleSong.text()
temp = open("musics.csv", mode="r", errors='ignore') # ignore mistakes
reader = csv.reader(temp)
n_cols = len(next(reader)) #numbers of columns
temp = open("musics.csv", "a")
writer = csv.writer(temp)
if voicer != '' or title != '':
data = [""]*n_cols # create a list of empty string
data[2] = title # add 3 column
data[3] = voicer # add 4 column
writer.writerow(data)
self.warningLabel.setText("Song is added")
else:
warn.setWindowTitle("System")
warn.setText("Song Details are required")
warn.setIcon(QtWidgets.QMessageBox.Warning)
warn.exec_()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.