You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 10:53:27