链接 这是我正在开发的代码项目。我正在制作图表区域来对每个选项卡进行排序,但它不起作用。
我想知道这个函数是否有错误或者什么问题
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。
在几行代码中,你有
while pause_event.is_set:
while pause_event.is_set():