AttributeError: 'function' object has no attribute 'connect'
时间: 2023-08-27 22:21:09 浏览: 172
Python3下错误AttributeError: ‘dict’ object has no attribute’iteritems‘的分析与解决
5星 · 资源好评率100%
抱歉,我在给出的代码中再次出现了错误。这次错误是因为我错误地将`self.showCalendar`函数作为参数传递给了`cellDoubleClicked.connect()`方法。
以下是更新后的示例代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QCalendarWidget, QVBoxLayout
from PyQt5.QtCore import QDate, Qt
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.tableWidget = QTableWidget(self)
self.tableWidget.setColumnCount(2)
self.tableWidget.setRowCount(4)
self.tableWidget.cellDoubleClicked.connect(self.showCalendar)
layout = QVBoxLayout()
layout.addWidget(self.tableWidget)
self.setLayout(layout)
def showCalendar(self, row, column):
calendar = QCalendarWidget(self)
calendar.setWindowModality(Qt.ApplicationModal) # 设置为应用程序模态,禁止与其他窗口交互
calendar.clicked[QDate].connect(lambda date: self.setDate(date, row, column))
calendar.show()
def setDate(self, date, row, column):
selectedDate = date.toString("yyyy-MM-dd")
item = QTableWidgetItem(selectedDate)
self.tableWidget.setItem(row, column, item)
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
```
现在,当您双击单元格时,将会弹出一个日历框,您可以选择日期并将其显示在对应的单元格中。
请注意,我已经更正了错误,并将`self.showCalendar`函数正确连接到`cellDoubleClicked`信号。
阅读全文