我有一个简单的脚本,它读取原始质谱仪数据,根据时间戳将数据分组到“序列”中,然后向用户提供序列列表以继续分析。问题是,我没有返回这些列表...这是代码:
import tkinter as tk
from import_raw import get_raw_data
def select_sequences(sequence_data):
# Tkinter GUI
root = tk.Tk()
root.title("Select Sequences")
root.geometry("400x200")
# Listbox for sequence selection
listbox = tk.Listbox(root, selectmode='multiple')
for item in reversed(sequence_data):
listbox.insert(tk.END, f"Sequence {item['sequence_number']}: {item['start_time']} - {item['end_time']}")
listbox.pack(fill="both")
# Confirm button
def confirm_selection():
selected_indices = listbox.curselection()
selected_sequences = [sequence_data[len(sequence_data) - i - 1]['sequence_number'] for i in selected_indices]
print("Selected Sequences:", selected_sequences)
root.destroy()
return selected_sequences
tk.Button(root, text="Confirm selection", command=confirm_selection).pack()
root.mainloop()
all_data, sequence_data = get_raw_data()
selected_sequences = select_sequences(sequence_data)
print("Selected Sequences:", selected_sequences)
注意两个打印函数,一个位于
confirm_selection()
函数内,另一个位于主脚本末尾。这是选择序列 20 和 21 后的输出:
Selected Sequences: [21, 20]
Selected Sequences: None
为什么函数没有返回/检索值?显然我忽略了一些非常简单的事情。
我被难住了。我期望两个打印函数返回相同的值。
你的函数
select_sequences()
没有return语句。所以返回值是 None
——这是标准的 Python 行为。因此,在主体中,变量selected_sequences
被赋予值None
,然后被打印出来。