如何在PyQt6/Qt Designer的QListWidget中添加自定义任务(无需对话框)
可行方案:直接通过界面输入框添加任务
要实现不用对话框、直接在界面输入任务并添加的功能,只需要两步:在UI里加一个输入框,然后修改add_task方法获取输入内容并添加到QListWidget里。
步骤1:修改UI文件(main.ui)
在你的UI界面中添加一个QLineEdit组件(用来让用户输入任务),可以给它命名为taskInput,放在"添加任务"按钮旁边或合适的位置。
步骤2:修改Python代码
调整你的MainWindow类,主要做这几件事:
- 把
tasks改成实例变量(self.tasks),让各个方法都能访问到 - 在
add_task方法里获取输入框的文本,验证非空后添加到列表控件和任务数组里
修改后的代码如下:
class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self): super().__init__() loadUi("main.ui", self) self.calendarWidget.selectionChanged(self.new_day_selected) self.addButton.clicked.connect(self.add_task) self.editButton.clicked.connect(self.edit_task) self.tasks = [] # 改为实例变量,方便跨方法访问 def new_day_selected(self): # 注意:selectionChanged信号无checked参数,移除多余参数避免报错 dateSelected = self.calendarWidget.selectedDate().toPy() print(f"Date Changed: {dateSelected}") def add_task(self): # 获取输入框文本并去除前后空格 task_text = self.taskInput.text().strip() if task_text: # 仅文本非空时执行添加操作 # 向QListWidget添加任务项 self.listWidget.addItem(task_text) # 同步存入任务数组 self.tasks.append(task_text) # 清空输入框,方便下一次输入 self.taskInput.clear() def edit_task(self, checked): pass
关键细节说明
- 移除了
new_day_selected和add_task中多余的checked参数:普通按钮的clicked信号、日历的selectionChanged信号不会传递该参数,留着会触发报错。 - 增加文本非空校验:避免添加空任务项。
- 添加后清空输入框:优化用户连续输入的体验。
内容的提问来源于stack exchange,提问作者allybobanley
相关产品推荐
相关产品推荐

