【问题标题】:Is there a way to find specific letters in a listbox in Tkinter?有没有办法在 Tkinter 的列表框中找到特定的字母?
【发布时间】:2022-06-12 02:54:59
【问题描述】:

这是我在 StackOverflow 上的第一个问题。它可能不符合标准,而只是一个基本查询。如标题所述,我可以在 Tkinter 的列表框中检查特定字母吗?

我的代码:

task_index = tasks_list.curselection()
selected_task = tasks_list.get(task_index) + "(Done)"

    for task in tasks_list.curselection():
        tasks_list.delete(task)
        tasks_list.insert(task_index, selected_task)

我想检查列表项中是否已经存在 (Done),如果存在,则打印类似“错误”的内容。希望有人能帮忙!

【问题讨论】:

  • 发布的代码似乎与您的问题无关。
  • 我希望 for 循环仅在没有“(完成)”的情况下发生。希望它更有意义。
  • 对不起,我仍然没有得到你想要的。
  • 所以,问题是列表框中有一个任务。但是使用一个按钮,您可以将其标记为完成(这基本上是编辑任务以说出原始任务名称+(完成))。这将告诉用户他们完成了该任务。但我想创建一个检查,如果任务是原始的并且尚未标记,您只能将任务标记为已完成。希望你现在明白了。

标签: tkinter listboxitem verify


【解决方案1】:

您可以浏览选定的任务,检查任务是否以“(完成)”结尾。如果没有,则通过在任务中添加“(完成)”来标记任务完成:

# assume mark_done() is executed when a button is clicked
# to mark selected tasks done
def mark_done():
    DONE_MARKER = '(Done)'
    for idx in tasks_list.curselection():
        task = tasks_list.get(idx)
        if not task.endswith(DONE_MARKER):
            # mark the task done
            tasks_list.delete(idx)
            tasks_list.insert(idx, f'{task} {DONE_MARKER}')
        else:
            print(f'"{task[:-len(DONE_MARKER)-1]}" already done')

【讨论】:

    猜你喜欢
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2019-09-04
    相关资源
    最近更新 更多