我需要帮助来查找 tkinter python 代码项目中的错误或错误

问题描述 投票:0回答:1

链接 这是我正在开发的代码项目。我正在制作图表区域来对每个选项卡进行排序,但它不起作用。

我想知道这个函数是否有错误或者什么问题

def run_sorting_algorithm(selected_algo, data, chart_area, thread_id):
    global pause_event, stop_event

    print(f"Running {selected_algo} on Tab {thread_id}")
    # start_time = time.time()
    sort_algorithms = {
        "Merge Sort": lambda: merge_sort(data, 0, len(data) - 1, chart_area),
        "Quick Sort": lambda: quick_sort(data, 0, len(data) - 1, chart_area),
        "Selection Sort": lambda: selection_sort(data, chart_area),
        "Bubble Sort": lambda: bubble_sort(data, chart_area),
        "Insertion Sort": lambda: insert_sort(data, chart_area),
    }

    try:
        while pause_event.is_set:
            time.sleep(0.1)
        if not stop_event.is_set():
            sort_algorithms[selected_algo]()
    except Exception as e:
        print(f"Error in thread {thread_id}: {e}")


def start_all_tabs_sorting():
    pause_event.clear()
    stop_event.clear()
    global threads
    threads = []

    if not data:
        status_label.config(text="No Data to Sort!", fg="red")
        return

    algorithms = [
        (algo_dropdown1.get(), data.copy(), chart_area_tab1),
    ]

    for idx, (algo, data_copy, chart_area) in enumerate(algorithms):
        thread = threading.Thread(
            target=run_sorting_algorithm,
            args=(algo, data_copy, chart_area, idx + 1),
        )
        threads.append(thread)
        thread.start()
    win.after(100, check_threads_complete)


def check_threads_complete():
    global threads
    if any(thread.is_alive() for thread in threads):
        win.after(100, check_threads_complete)
    else:
        print("All sorting threads have completed.")
        status_label.config(text="All sorting threads completed!", fg="blue")


def start_sorting():
    global data

    try:
        manual_data = list(map(int, manual_entry.get().split(",")))
        if manual_data:
            data = manual_data
    except ValueError:
        status_label.config(
            text="Invalid Manual Input! Please enter comma-separated integers.",
            fg="red",
        )
        return

    if not data:
        status_label.config(
            text="No Data to Sort! Please generate or input data.", fg="red"
        )
        return

    status_label.config(text="Sorting started...", fg="green")

我试图为项目实现多线程,结果变成了不完整的混乱代码。我尝试修复并修复代码,但仍然无法正常工作。请帮我找出错误和bug。

python algorithm sorting tkinter python-multithreading
1个回答
0
投票

在几行代码中,你有

while pause_event.is_set:

它应该是
while pause_event.is_set():

你必须更正它,程序才能工作。

注意:标签time_label1、time_label2和time_label3尚未在Tkinter中定义。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.