AttributeError: 'QLineEdit' object has no attribute 'addItem'報這個
时间: 2023-08-06 21:02:20 浏览: 153
抱歉,我之前的回答中犯了一个错误。`QLineEdit`类没有`addItem`方法,因为它是一个可编辑的单行文本输入框,而不是下拉选择框。要替换为可编辑的下拉输入框,您可以使用`QComboBox`类,并设置其为可编辑模式(使用`setEditable(True)`方法)。
下面是修改后的代码示例:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QComboBox, QPushButton, QGridLayout
from PyQt5.QtCore import QTimer, QTime
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('定时播放')
# 创建下拉输入框和按钮
self.timeComboBoxes = []
self.textComboBoxes = []
self.musicComboBoxes = []
self.stopComboBoxes = []
for i in range(6):
timeComboBox = QComboBox(self)
timeComboBox.setEditable(True) # 设置为可编辑模式
timeComboBox.addItem('00:00')
self.timeComboBoxes.append(timeComboBox)
textComboBox = QComboBox(self)
textComboBox.setEditable(True) # 设置为可编辑模式
self.textComboBoxes.append(textComboBox)
musicComboBox = QComboBox(self)
musicComboBox.setEditable(True) # 设置为可编辑模式
self.musicComboBoxes.append(musicComboBox)
stopComboBox = QComboBox(self)
stopComboBox.setEditable(True) # 设置为可编辑模式
stopComboBox.addItem('00:00')
self.stopComboBoxes.append(stopComboBox)
self.startButton = QPushButton('开始播放', self)
self.startButton.clicked.connect(self.startPlayback)
# 设置布局
self.centralWidget = QLabel(self)
self.setCentralWidget(self.centralWidget)
self.centralWidget.setLayout(self.createLayout())
def createLayout(self):
layout = QGridLayout()
# 添加标签和下拉输入框
layout.addWidget(QLabel('开始时间'), 0, 0)
layout.addWidget(QLabel('文字内容'), 0, 1)
layout.addWidget(QLabel('MP3音乐路径'), 0, 2)
layout.addWidget(QLabel('停止时间'), 0, 3)
for i in range(6):
layout.addWidget(self.timeComboBoxes[i], i + 1, 0)
layout.addWidget(self.textComboBoxes[i], i + 1, 1)
layout.addWidget(self.musicComboBoxes[i], i + 1, 2)
layout.addWidget(self.stopComboBoxes[i], i + 1, 3)
layout.addWidget(self.startButton, 7, 0, 1, 4)
return layout
def startPlayback(self):
# 获取设置的时间、文字和音乐路径
times = [timeCombo.currentText() for timeCombo in self.timeComboBoxes]
texts = [textCombo.currentText() for textCombo in self.textComboBoxes]
musics = [musicCombo.currentText() for musicCombo in self.musicComboBoxes]
stops = [stopCombo.currentText() for stopCombo in self.stopComboBoxes]
# 定时执行播放任务
timer = QTimer(self)
timer.timeout.connect(lambda: self.playback(times, texts, musics, stops))
timer.start(1000) # 每秒执行一次
def playback(self, times, texts, musics, stops):
current_time = QTime.currentTime().toString('hh:mm')
for i in range(6):
if times[i] == current_time and texts[i] != '' and musics[i] != '' and stops[i] != '':
# 根据需求执行文字转语音和播放音乐的操作
print(f'播放时间:{times[i]}')
print(f'文字内容:{texts[i]}')
print(f'音乐路径:{musics[i]}')
print(f'停止时间:{stops[i]}')
print('--------------------')
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
```
现在,代码已经修正,使用了可编辑的下拉输入框(`QComboBox`),并设置为可编辑模式(`setEditable(True)`)。
如果您有任何其他问题,请随时提问。对于之前的错误表示歉意。
阅读全文