从使用for循环创建的列表中获取输入并将其存储为元组

发布于 2025-01-30 10:29:24 字数 1615 浏览 2 评论 0原文

当我创建由“ for Loop”生成的条目列表时,我有一个问题。在每个循环上,生成两个条目。 我的目的是用户单击“创建”按钮 - >从条目中获取数据,并将其存储在列表中,以“(弧,容量)”。

这是我的代码:

    inputs = []
    def show_inputs():

        for input in inputs:
            label.config(text=f'{input}\n')

    edges_number = edges_variable.get()
    if is_weighted_variable.get():
        for i in range(edges_number):
            edge_name_label = tk.Label(second_frame, text=f'Arc {i + 1}')
            edge_weight_label = tk.Label(second_frame, text=f'Capacité {i + 1}')
            edge_name_label.grid(row=i + 1, column=i - i)
            edge_weight_label.grid(row=i + 1, column=i + 2 - i)
            edge_name_entry = tk.Entry(second_frame, )
            edge_weight_entry = tk.Entry(second_frame)
            edge_name_entry.grid(row=i + 1, column=i - (i - 1))
            edge_weight_entry.grid(row=i + 1, column=i + 3 - (i - 1))
            inputs.append((edge_name_entry.get(), edge_weight_entry.get()))
    else:
        for i in range(edges_number):
            edge_name_label = tk.Label(second_frame, text=f'Arc {i}')
            edge_name_label.grid(row=i + 1, column=i - i)
            edge_name_entry = tk.Entry(second_frame, )
            edge_name_entry.grid(row=i + 1, column=i - (i - 1))
            inputs.append(edge_name_entry.get())

    show_inputs_button = tk.Button(second_frame, text="Creer", command=show_inputs)
    show_inputs_button.grid(columnspan=2)

“在此处输入图像描述”

I have an issue, when I create a list of entries generated by a "for loop". on each loop, two entries get generated.
my purpose is when The user clicks the "create" button -> get the data from the entries and store it inside a list as tuples "(arc, capacity)".

This Is My Code :

    inputs = []
    def show_inputs():

        for input in inputs:
            label.config(text=f'{input}\n')

    edges_number = edges_variable.get()
    if is_weighted_variable.get():
        for i in range(edges_number):
            edge_name_label = tk.Label(second_frame, text=f'Arc {i + 1}')
            edge_weight_label = tk.Label(second_frame, text=f'Capacité {i + 1}')
            edge_name_label.grid(row=i + 1, column=i - i)
            edge_weight_label.grid(row=i + 1, column=i + 2 - i)
            edge_name_entry = tk.Entry(second_frame, )
            edge_weight_entry = tk.Entry(second_frame)
            edge_name_entry.grid(row=i + 1, column=i - (i - 1))
            edge_weight_entry.grid(row=i + 1, column=i + 3 - (i - 1))
            inputs.append((edge_name_entry.get(), edge_weight_entry.get()))
    else:
        for i in range(edges_number):
            edge_name_label = tk.Label(second_frame, text=f'Arc {i}')
            edge_name_label.grid(row=i + 1, column=i - i)
            edge_name_entry = tk.Entry(second_frame, )
            edge_name_entry.grid(row=i + 1, column=i - (i - 1))
            inputs.append(edge_name_entry.get())

    show_inputs_button = tk.Button(second_frame, text="Creer", command=show_inputs)
    show_inputs_button.grid(columnspan=2)

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

長街聽風 2025-02-06 10:29:24

您需要将小部件保存在列表中,而不是.get()方法的结果。

for i in range(edges_number):
    ...
    inputs.append(edge_name_entry)

稍后,您可以在列表上迭代以获取当前值:

for input in inputs:
    print(input.get())

或者,可以使用列表理解来返回值列表:

values = [input.get() for input in inputs]

You need to save the widgets in the list, not the result of the .get() method.

for i in range(edges_number):
    ...
    inputs.append(edge_name_entry)

Later, you can iterate over the list to get the current values:

for input in inputs:
    print(input.get())

Or, you can use a list comprehension to return a list of values:

values = [input.get() for input in inputs]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文